我們在做WinForm開發的時候,經常要用到DataGridView控制項,因此控制項可以調整列的順序及寬度,使用者如果想儲存最後調整的格式,怎麼辦?
此時我們可以考慮儲存每個Form中DataGridView的格式,以XML格式儲存。
步驟如下:
1. 在程式的目前的目錄下建立一個檔案夾,例如:XML
2.先建立儲存格式的方法,代碼如下:
/// <summary><br /> /// 儲存DataGridView樣式<br /> /// </summary><br /> /// <param name="form">表單</param><br /> /// <param name="dgv">DataGridView</param><br /> public static void SaveDGVStyle(Form form, DataGridView dgv)<br /> {<br /> try<br /> {<br /> string XMLPath;<br /> XMLPath= Application.StartupPath + @"/XML/";<br /> string fileName = XMLPath + form.Name + "_" + dgv.Name + ".xml";<br /> DataTable tb=new DataTable();<br /> tb.TableName = dgv.Name;<br /> tb.Columns.Add("colName");//列名<br /> tb.Columns.Add("colHeader");//標題<br /> tb.Columns.Add("colWidth");//寬度<br /> tb.Columns.Add("colVisable");//是否顯示<br /> tb.Columns.Add("colDisplayIndex");//顯示順序</p><p> foreach (DataGridViewColumn col in dgv.Columns)<br /> {<br /> DataRow row = tb.NewRow();<br /> row["colName"] = col.Name;<br /> row["colHeader"] = col.HeaderText;<br /> row["colWidth"] = col.Width;<br /> row["colVisable"] = col.Visible;<br /> row["colDisplayIndex"] = col.DisplayIndex;<br /> tb.Rows.Add(row);<br /> tb.AcceptChanges();</p><p> }<br /> tb.WriteXml(fileName);<br /> }<br /> catch (Exception ex)<br /> {<br /> Console.Write(ex.Message);<br /> }</p><p> }<br />
3.讀取XML檔案,並設定DataGridView格式,代碼如下:
/// <summary><br /> /// 讀取DataGridView格式並應用<br /> /// </summary><br /> /// <param name="form"></param><br /> /// <param name="dgv"></param><br /> public static void ReadGVStyle(Form form, DataGridView dgv)<br /> {<br /> try<br /> {<br /> string XMLPath;<br /> XMLPath= Application.StartupPath + @"/XML/";<br /> string fileName = XMLPath + form.Name + "_" + dgv.Name + ".xml";<br /> if (!File.Exists(fileName))<br /> return;</p><p> DataTable tb=new DataTable();<br /> tb.TableName = dgv.Name;<br /> tb.Columns.Add("colName");//列名<br /> tb.Columns.Add("colHeader");//標題<br /> tb.Columns.Add("colWidth");//寬度<br /> tb.Columns.Add("colVisable");//是否顯示<br /> tb.Columns.Add("colDisplayIndex");//顯示順序<br /> tb.ReadXml(fileName);<br /> foreach (DataRow row in tb.Rows)<br /> {<br /> dgv.Columns[row["colName"].ToString()].HeaderText = row["colHeader"].ToString();<br /> dgv.Columns[row["colName"].ToString()].Width =int.Parse(row["colWidth"].ToString());<br /> dgv.Columns[row["colName"].ToString()].Visible = Boolean.Parse(row["colVisable"].ToString());<br /> dgv.Columns[row["colName"].ToString()].DisplayIndex = int.Parse(row["colDisplayIndex"].ToString());</p><p> }<br /> }<br /> catch (Exception ex)<br /> {<br /> Console.Write(ex.Message);<br /> }</p><p> }
4.在表單的Load事件裡面調用上面的方法即可,
例如:ReadGVStyle(this, dgv1);<br />
當然,方法有很多,這隻是其中一種。