c#中用xml文件保存系统设置 winform
介绍用xml保存系统设置,以及修改个别设置的方法。
xml文件:
<settings>
<场景背景色>1</场景背景色>
<方块颜色>2</方块颜色>
<游戏等级>10</游戏等级>
<最高积分>12</最高积分>
<最后修改时间>2007-05-04 10:10:10</最后修改时间>
</settings>
从xml中读取设置:
ds.ReadXml("settings.xml");
//dataGridView1.DataSource = ds.Tables[0].DefaultView;
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
MessageBox.Show("最后修改时间为:" + ds.Tables[0].Rows[0][4].ToString());
}
修改某一条设置:
ds.ReadXml("settings.xml");
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
ds.Tables[0].Rows[0][4] = DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒");
}
ds.AcceptChanges();
ds.WriteXml("settings.xml");
ds.Clear();
ds.Dispose();
完!
C# winform treeview node添加右键菜单并选中节点
首先,要向窗体添加一个TreeView控件(废话);
然后再添加一个ContextMenuStrip控件;
接下就要给TreeView添加一个MouseDown事件,代码如下:
{
if (e.Button == MouseButtons.Right)//判断你点的是不是右键
{
Point ClickPoint = new Point(e.X, e.Y);
TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
if (CurrentNode != null)//判断你点的是不是一个节点
{
switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单
{
case "errorUrl":
CurrentNode.ContextMenuStrip = contextMenuStripErrorUrl;
break;
}
treeView1.SelectedNode = CurrentNode;//选中这个节点
}
}
}
DateTime相关知识
string st1="12:13";
string st2="14:14";
DateTime dt1=Convert.ToDateTime(st1);
DateTime dt2=Convert.ToDateTime(st2);
DateTime dt3=DateTime.Now;
if(DateTime.Compare(dt1,dt2)>0)
msg.Text=st1+">"+st2;
else
msg.Text=st1+"<"+st2;
msg.Text+="\r\n"+dt1.ToString();
if(DateTime.Compare(dt1,dt3)>0)
msg.Text+="\r\n"+st1+">"+dt3.ToString();
else
msg.Text+="\r\n"+st1+"<"+dt3.ToString();
2。计算两个时间差值的函数,返回时间差的绝对值:
private string DateDiff(DateTime DateTime1,DateTime DateTime2)
{
string dateDiff=null;
try
{
TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
TimeSpan ts=ts1.Subtract(ts2).Duration();
dateDiff=ts.Days.ToString()+"天"
+ts.Hours.ToString()+"小时"
+ts.Minutes.ToString()+"分钟"
+ts.Seconds.ToString()+"秒";
}
catch
{
}
return dateDiff;
}
3。实现计算DateTime1-36天=DateTime2的功能
TimeSpan ts=new TimeSpan(40,0,0,0);
DateTime dt2=DateTime.Now.Subtract(ts);
msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
msg.Text+=dt2.ToString();
4。String类型转换成DateTime类型
string datetime = "2007年0701:1513";
DateTime dt = DateTime.ParseExact(datetime, "yyyy年MMdd:HHmm",CultureInfo.CurrentCulture);
MessageBox.Show(dt.ToString());
小知识点也要记下来,做了几次老忘记……
C#中时间的处理
//三天时间段
TimeSpan ts=TimeSpan.FromDays(3);
//三天前时间
DateTime dt3=dt-ts;
//一星期时间段
TimeSpan tsw=TimeSpan.FromDays(7);
//一周前时间
DateTime dtw=dt-tsw;
命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“Excel”
c#中引用excel组建导出excel,换了台机器竟然提示“Microsoft.Office.Interop”中不存在类型或命名空间名称“Excel””
处理了一下:
方法1:重新安装Office,在OFFICE的安装详细列表里面EXCEL中有一个.NET程序支持的选项。
方法2:
1. 在visual Studio 2005命令提示工具中,定位到Excel安装目录,运行“TlbImp EXCEL.EXE”命令,把Excel.exe编译为Excel.dll,
3. 引用刚编译好的Excel.dll,添加引用using Excel;删除Microsoft.Office.Interop.Excel;
用Excel替换Microsoft.Office.Interop.Excel。
//using Application=Microsoft.Office.Interop.Excel.Application;
using Application = Excel.Application;
导出excel的代码:
{
if (
MessageBox.Show("是否将当前页面日志信息导出到excel中?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) ==
DialogResult.OK)
{
try
{
goexceldt = new goececlDT();
DataTable dtappen;
if (tabControl1.SelectedIndex == 0)
{
dtappen = goexceldt.GetDatatablerzyb(); //调用SQL语句执行查询(异步的日志)
}
else
{
if (cmblyk.Text == null || cmblyk.Text == "")
{
MessageBox.Show("请选择来源库", "提示");
return;
}
dtappen = goexceldt.GetDatatablerztb(layer); //调用SQL语句执行查询(同步的日志)
}
//实例化一个Excel.Application对象
Application excel = new Application();
//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
excel.Visible = false;
Workbooks ibooks = excel.Workbooks; //获得工作薄的集合
Workbook book = ibooks.Add(Missing.Value); //添加一个工作薄采用缺省参数
Worksheet sheet1 = (Worksheet) book.Worksheets[1]; //获得第一个SHEET页
if (tabControl1.SelectedIndex == 0)
{
sheet1.Cells[1, 1] = "任务名称";
sheet1.Cells[1, 2] = "目标库名称";
sheet1.Cells[1, 3] = "迁移日期";
sheet1.Cells[1, 4] = "来源库名称";
sheet1.Cells[1, 5] = "目标表名称";
sheet1.Cells[1, 6] = "开始时间";
sheet1.Cells[1, 7] = "结束时间";
sheet1.Cells[1, 8] = "来源表录入时间戳";
sheet1.Cells[1, 9] = "迁移记录数";
sheet1.Cells[1, 10] = "更新记录数";
sheet1.Cells[1, 11] = "出错记录数";
sheet1.Cells[1, 12] = "错误信息";
//sheet1.Cells[1, 12] = "出错记录数";
//sheet1.Cells[1, 6] = "迁移批次";
//sheet1.Cells[1, 7] = "开始时间";
//sheet1.Cells[1, 8] = "结束时间";
//sheet1.Cells[1, 9] = "来源表录入时间戳";
//sheet1.Cells[1, 10] = "迁移记录数";
//sheet1.Cells[1, 11] = "更新记录数";
//sheet1.Cells[1, 12] = "出错记录数";
int count = 1;
foreach (DataRow dr in dtappen.Rows)
{
sheet1.Cells[count + 1, 1] = dr["RWMC"].ToString();
sheet1.Cells[count + 1, 2] = dr["ytkmc"].ToString();
sheet1.Cells[count + 1, 3] = dr["QYRQ"].ToString();
sheet1.Cells[count + 1, 4] = dr["ytkmc1"].ToString();
sheet1.Cells[count + 1, 5] = dr["bmc"].ToString();
sheet1.Cells[count + 1, 6] = dr["qykssj"].ToString();
sheet1.Cells[count + 1, 7] = dr["qyjssj"].ToString();
sheet1.Cells[count + 1, 8] = dr["lrsj"].ToString();
sheet1.Cells[count + 1, 9] = dr["qyjls"].ToString();
sheet1.Cells[count + 1, 10] = dr["gxjls"].ToString();
sheet1.Cells[count + 1, 11] = dr["qyztbz"].ToString();
sheet1.Cells[count + 1, 12] = dr["cwxx"].ToString();
count += 1; // 计数器累加<行数累加>
}
}
else
{
sheet1.Cells[1, 1] = "日志ID";
sheet1.Cells[1, 2] = "标准表PK";
sheet1.Cells[1, 3] = "迁移日期";
sheet1.Cells[1, 4] = "迁移开始时间";
sheet1.Cells[1, 5] = "迁移结束时间";
sheet1.Cells[1, 6] = "新增记录数";
sheet1.Cells[1, 7] = "更新记录数";
sheet1.Cells[1, 8] = "删除记录数";
sheet1.Cells[1, 9] = "错误记录数";
sheet1.Cells[1, 10] = "数据备份文件名";
int count = 1;
foreach (DataRow dr in dtappen.Rows)
{
sheet1.Cells[count + 1, 1] = dr["RZ_ID"].ToString();
sheet1.Cells[count + 1, 2] = dr["MBB_ID"].ToString();
sheet1.Cells[count + 1, 3] = dr["QYRQ"].ToString();
sheet1.Cells[count + 1, 4] = dr["QYKSSJ"].ToString();
sheet1.Cells[count + 1, 5] = dr["QYJSSJ"].ToString();
sheet1.Cells[count + 1, 6] = dr["XZJLS"].ToString();
sheet1.Cells[count + 1, 7] = dr["GXJLS"].ToString();
sheet1.Cells[count + 1, 8] = dr["SJJLS"].ToString();
sheet1.Cells[count + 1, 9] = dr["CWJLS"].ToString();
sheet1.Cells[count + 1, 10] = dr["BFWJM"].ToString();
count += 1; // 计数器累加<行数累加>
}
}
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = true;
string excelFileName = string.Empty;
SaveFileDialog sf = new SaveFileDialog();
String a = "异步迁移任务日志";
if (tabControl1.SelectedIndex == 0)
{
a = "异步迁移任务日志";
}
else
{
a = cmblyk.SelectedText + "源头库的同步迁移任务日志";
}
if (sf.FileName.Length == 0)
{
string datenow = DateTime.Now.ToShortDateString();
sf.FileName = a + datenow;
}
sf.Filter = "*.xls|*.*";
if (sf.ShowDialog() == DialogResult.OK)
{
excelFileName = sf.FileName;
}
else
{
return;
}
book.SaveAs(excelFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
XlSaveAsAccessMode.xlNoChange,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excel.Quit();
excel = null;
MessageBox.Show("导出Excel成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e1)
{
MessageBox.Show(e1.Message);
return;
}
}
}