c#中用xml文件保存系统设置 winform

介绍用xml保存系统设置,以及修改个别设置的方法。

xml文件:

<settings>
  <场景背景色>1</场景背景色>
  <方块颜色>2</方块颜色>
  <游戏等级>10</游戏等级>
  <最高积分>12</最高积分>
  <最后修改时间>2007-05-04 10:10:10</最后修改时间>
</settings>


从xml中读取设置:

 

  

          DataSet ds = new DataSet();
            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());
            }


修改某一条设置:

   

         DataSet ds = new DataSet();
            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事件,代码如下:

 

private void treeView1_MouseDown(object sender, MouseEventArgs e)
        {
            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相关知识

 

1。比较时间大小的实验
  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();

4String类型转换成DateTime类型

         string datetime = "2007年0701:1513";
         DateTime dt = DateTime.ParseExact(datetime, "yyyy年MMdd:HHmm",CultureInfo.CurrentCulture);
         MessageBox.Show(dt.ToString());


小知识点也要记下来,做了几次老忘记……

C#中时间的处理

 

DateTime   dt=DateTime.Now;     
                  //三天时间段   
                  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 Excel;
//using Application=Microsoft.Office.Interop.Excel.Application;
using Application = Excel.Application;

导出excel的代码:

 

private void btDC_Click(object sender, EventArgs e) //导出到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;
                }
            }
        }