1. 程式人生 > >winform,DataGridView繫結資料後更改列屬性、動態建立(用一個控制元件顯示多表適用)

winform,DataGridView繫結資料後更改列屬性、動態建立(用一個控制元件顯示多表適用)

          DataGridView 特效 = new DataGridView();
          string[] 列名 = { "直線", "炸彈", "骷髏", "禮盒" }, 說明 = {"消除一列所有元素","消除4×4範圍元素","消除所有指定元素","隨機贈送三種特效一個"};
            int 列數 = 0;
            foreach (string 元素 in 列名)
            {
                DataGridViewImageColumn 新圖列 = new DataGridViewImageColumn();
                新圖列.HeaderText = 元素;
                特效.Columns.Add(新圖列);
            }
            特效.Rows.Add();
            foreach (string 元素 in 說明)
            {
                特效.Rows[0].Cells[列數].Value = new Bitmap(24, 24);
                特效.Rows[0].Cells[列數++].ToolTipText = 元素;
            }
            特效.Rows.Add(); 列數 = 0;
            foreach (string 元素 in 列名)
            {
                DataGridViewTextBoxCell 文字列 = new DataGridViewTextBoxCell();
                特效.Rows[1].Cells[列數] = 文字列;
                特效.Rows[1].Cells[列數++].Value = "0";
            }

        private void 改變列屬性()
        {
            for (int 行 = 0; 行 < 編輯控表.RowCount - 1; 行++)
            {
                for (int 列 = 0; 列 < 編輯控表.ColumnCount; 列++)
                {
                    DataGridViewLinkCell 超連結列 = new DataGridViewLinkCell();
                    if (編輯控表.Rows[行].Cells[列].Value.ToString().IndexOf("http://") == 0)
                        編輯控表.Rows[行].Cells[列] = 超連結列;
                }
            }
        }

        private void 建立資料顯示(string[] 表列名)
        {
            編輯控表.Columns.Clear();
            foreach (string 元素 in 表名)
            {
                DataGridViewTextBoxColumn 列 = new DataGridViewTextBoxColumn();
                列.HeaderText = 元素;
                列.DataPropertyName = 元素;
                編輯控表.Columns.Add(列);
            }
        }

                string[] 動態顯示列 = null;
                動態顯示列 = new string[] { "歸屬", "姓名", "生日", "性別", "關係" }; 建立資料顯示(建立);
                動態顯示列 = new string[] { "總類", "別類", "子類", "標題", "內容" }; 建立資料顯示(建立); 
                動態顯示列 = new string[] { "智力值", "情緒值", "體力值", "均值", "相隔天數", "提示內容", "心情日記", "日期" }; 建立資料顯示(建立);
WinForm DataGridView 行焦點不改變的情況下提交資料:
if (DataGridView.IsCurrentCellDirty) DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
bindingSource.EndEdit();