C#-DataGridView由User自訂欄位顯示,並可以保存
延續上一個討論,
若使用者想自訂欄位是否顯示呢?
和「自訂欄位順序」一樣,
利用-屬性(Properties)來完成,
但是有所不同,
需要另開另一個視窗做所有欄位的顯示,
方便使用者選擇,
步驟如下:
1-需先建另一個「Form」-visiable.cs,將所有的欄位先顯示出來,再利用此visiable.cs去決定那些欄位要顯示
private void visiable_Load(object sender, EventArgs e) { _CKListBoxVsGrdView(_tempgrid, CkBox, "ini"); } //控制checklistbox為勾選或取消狀態 public void _CKListBoxVsGrdView(InfoDataGridView _GrdV, CheckedListBox _CkBox, string _status) { ArrayList list = Properties.Settings.Default.DataGridViewShowDETAIL; if (list != null) { _CkBox.CheckOnClick = true; //點一下就勾選 true _CkBox.MultiColumn = true; //橫向多欄顯示 true for (int i = 0; i < list.Count; i++) { bool _check = (bool)list[i]; _CkBox.Items.Add(_GrdV.Columns[_Gridcol[i].ToString()].HeaderText.ToString(), _check); } } } //程式關閉前記錄欄位順序,並重整 private void visiable_FormClosing(object sender, FormClosingEventArgs e) { ArrayList list = new ArrayList(); for (int i = 0; i < _tempgrid.Columns.Count; i++) { if (CkBox.GetItemChecked(i)) { list.Add(true); } else { list.Add(false); } } Properties.Settings.Default.DataGridViewShowDETAIL = list; Properties.Settings.Default.Save(); GridColViewStateChange(_tempgrid); } //將掃瞄檔案變更欄位顯示狀態 public void GridColViewStateChange(InfoDataGridView _tempgrid) { ArrayList list = Properties.Settings.Default.DataGridViewShowDETAIL; if (list != null) { for (int i = 0; i < list.Count; i++) { _tempgrid.Columns[i].Visible = (bool)list[i]; } } }
2-要先設定在Form所在的Project,選擇屬性(Properties),在左邊選擇設定(Settings),在右邊新建一個設定
3-「GridColViewStateChange」決定那些欄位顯示
//將掃瞄檔案變更欄位顯示狀態 public void GridColViewStateChange(InfoDataGridView _tempgrid) { ArrayList list = Properties.Settings.Default.DataGridViewShowDETAIL; if (list != null) { for (int i = 0; i < list.Count; i++) { _tempgrid.Columns[i].Visible = (bool)list[i]; } } }
自我LV~