C#-DataGridView由User自訂欄位顯示,並可以保存

  • 6233
  • 0
  • C#
  • 2010-05-21

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),在右邊新建一個設定

image

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~