winfrom DataGridView 列表操作

操作DataGridView 以xml形式保存,拖动需要列的顺序保存,加载,删除文件

Load 事件调用加载文件 (subInitDgv();)

//初始化列表
        private void subInitDgv()
        {
               LoginInfo.BindReadDataGridViewStyle(this.Name, dgvSubbill);
        }

详见下面代码: 

    // 加载XMLDataGridView 样式
        public static void BindReadDataGridViewStyle(string strFromName, DataGridView dgvMain)
        {
            try
            {
                string XMLPath;
                XMLPath = Application.StartupPath + @"\\config" + "\\";
                string FileName = XMLPath + strFromName + "_" + dgvMain.Name + ".xml";  
                if (!File.Exists(FileName))
                {
                    return;
                }

                DataTable DTname = new DataTable();
                DTname.TableName = dgvMain.Name;
                DTname.Columns.Add("ColName");  //列名
                DTname.Columns.Add("ColHeaderText");  //标题
                DTname.Columns.Add("ColWidth");  //宽度
                DTname.Columns.Add("ColVisble");  //是否显示              
                DTname.Columns.Add("ColId");  //显示顺序
                //DTname.Columns.Add("DefaultCellStyle");  //单元格样式
                //DTname.Columns.Add("ColumnType");  //单元格类型
                DTname.ReadXml(FileName);

                foreach (DataRow row in DTname.Rows)
                {
                    dgvMain.Columns[row["ColName"].ToString().Trim()].HeaderText = row["ColHeaderText"].ToString().Trim();
                    dgvMain.Columns[row["ColName"].ToString().Trim()].Width = int.Parse(row["ColWidth"].ToString().Trim());
                    dgvMain.Columns[row["ColName"].ToString().Trim()].Visible = Boolean.Parse(row["ColVisble"].ToString().Trim());
                    dgvMain.Columns[row["ColName"].ToString().Trim()].DisplayIndex = int.Parse(row["ColId"].ToString().Trim());
                    //dgvMain.Columns[row["name"].ToString()].DefaultCellStyle.Alignment = (DataGridViewContentAlignment)row["DefaultCellStyle"];
                    //dgvMain.Columns[row["ColumnType"].ToString()].DataPropertyName = row["ColumnType"].ToString();             
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        /// <summary>
        /// 保存用户自定义列表顺序
        /// </summary>
        /// <param name="strFormName">窗体名称</param>
        /// <param name="DgvMain">DataGridView名称</param>
        public static void SaveDataGridViewStyle(string strFormName, DataGridView DgvMain)
        {
            try
            {
                string XMLPath;
                XMLPath = Application.StartupPath + @"\\config" + "\\";
                string FileName = XMLPath + strFormName + "_" + DgvMain.Name + ".xml";  //生成文件到指定目录
                DataTable DTname = new DataTable();
                DTname.TableName = DgvMain.Name;
                DTname.Columns.Add("ColName");  //列名
                DTname.Columns.Add("ColHeaderText");  //标题
                DTname.Columns.Add("ColWidth");  //宽度
                DTname.Columns.Add("ColVisble");  //是否显示            
                DTname.Columns.Add("ColId");  //显示顺序             
                //DTname.Columns.Add("DefaultCellStyle");  //单元格样式
                //DTname.Columns.Add("ColumnType");  //单元格类型        

                string[] array = new string[DgvMain.Columns.Count];
                //获取Visble =true 的列 
                foreach (DataGridViewColumn column in DgvMain.Columns)
                {
                    if (column.Visible == true)
                    {

                        //  拖动列顺序 
                        array[column.DisplayIndex] = column.Name + '|' + column.HeaderText + '|' + column.Width + '|' + column.Visible + '|' + column.DisplayIndex;
                    }
                }
                int ColumnsCount = array.Length;
                //取列属性
                for (int i = 0; i < ColumnsCount; i++)
                {
                    string[] str = new string[5];
                    try
                    {
                        DataRow row = DTname.NewRow();
                        str = array.GetValue(i).ToString().Split('|'); //分隔
                        row["ColName"] = str[0];
                        row["ColHeaderText"] = str[1];
                        row["ColWidth"] = str[2];
                        row["ColVisble"] = str[3];
                        row["ColId"] = str[4];
                        DTname.Rows.Add(row);
                        DTname.AcceptChanges();
                    }
                    catch
                    {
                        continue;
                    }
                }
                DTname.WriteXml(FileName);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // 删除指定的XML文件
        public static bool deleteDataGridViewStyle(string strFromName, DataGridView dgvMain)
        {
            string XMLPath;
            XMLPath = Application.StartupPath + @"\\config" + "\\";
            string FileName = XMLPath + strFromName + "_" + dgvMain.Name + ".xml";
            if (File.Exists(FileName))
            {
                File.Delete(FileName); return true;
            }
            else
            {
                return false;
            }
        }

原文地址:https://www.cnblogs.com/quanxie/p/2995722.html