主页 > 互联网  > 

C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。

C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。

最终显示效果,如下图所示:

datagridview开始显示通过调用XML存储的字段值及顺序来显示,右键调出Tools来控制显示的顺序及是否显示,通过加号和减号进行调整顺序。

XML存储字段值及顺序

主要代码及事件:

获取datagridview当前显示的字段值及顺序,并存储到数组中,用于listview显示原始的全部的字段值,以及当前显示的顺序;

        private string[] _GetColunmName()         {             string[] value=new string[dataGridView1.ColumnCount];              for (int i = 0; i < dataGridView1.ColumnCount; i++)             {                 int x = dataGridView1.Columns[i].DisplayIndex;                 value[x]= dataGridView1.Columns[i].HeaderText;             }             return value;         }

从XML中获取需要显示的字段值的信息,并进行显示及显示顺序的设置;

        private void SetColumn(string GridName) //GridName为指定节点的名称;         {             string d = GetXmlColumnName(GridName); //调用事件获取指定节点的内容             string[] dstr = d.Split(',');             dataGridView1.SuspendLayout();             for (int i = 0; i < dataGridView1.Columns.Count; i++)             {                 dataGridView1.Columns[i].Visible = dstr.Contains(dataGridView1.Columns[i].HeaderText);                 string _header = dataGridView1.Columns[i].HeaderText;                 for (int j = 0; j < dstr.Length; j++)                 {                     string s = dstr[j];                     if (s == _header)                     {                         dataGridView1.Columns[i].DisplayIndex = j;                     }                 }             }             dataGridView1.ResumeLayout(true);         }

tools页面与主页面通过委托与事件的方式进行调用;

tools的主要代码

Tools的onload的事件代码

  private void Tools_Load(object sender, EventArgs e)         {             string[] str = _columnname;//获取调用模块的列明;             string d = GetXmlColumnName(_mainname); //获取xml中存储的值;

            string[] dstr = d.Split(',');//xml中的列             //显示全部的GridView名称             foreach (var _str in str)             {                 listView1.Items.Add(_str.ToString());             }             //将XML中存在的字段名进行打钩选中             for (int i = 0; i < listView1.Items.Count; i++)             {                 foreach (var _str in dstr)                 {                     if (listView1.Items[i].Text == _str.ToString())                     {                         listView1.Items[i].Checked = true;                     }                 }             }         }

//保存到XML的代码;_mainname为节点的名称,value为获取的字段名称的顺序;

 private void SaveXmlColumn()          {             string value = "";             for (int i = 0; i < listView1.Items.Count; i++)             {                 if (listView1.Items[i].Checked==true)                 {                     value += listView1.Items[i].Text + ",";                 }             }             if (value.Length > 0)             {                 value = value.Remove(value.Length - 1, 1);             }             SaveXmlHeader(_mainname, value); //调用保存到XML中;             SetXmlColumn();  //调用事件进行显示页面的调整         }

标签:

C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。