拉一個 DataGridView 並手動產生兩個 DataGridViewTextBoxColumn,基本上 Layout 只是觀察 Designer.cs 用,沒甚麼作用
理論上 WinForm 啟動時,加入 DataGridViewTextBoxColumn 時會觸發 DataGridView.ColumnAdded 事件,所以只要在 ColumnAdded 內紀錄下來就行,想像如下面的 Code
namespace dgvDesigner { public partial class Form1 : Form { public Form1() { InitializeComponent(); } StringBuilder sb = new StringBuilder(); private void Form1_Load(object sender, EventArgs e) { dataGridView1.ColumnAdded += DataGridView1_ColumnAdded; sb.Clear(); dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "Col1", ReadOnly = false }); dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "Col2", ReadOnly = true }); MessageBox.Show(sb.ToString(),"執行階段新增 DataGridVeiwTextboxColumn"); } private void DataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e) { sb.AppendLine($"Name:{e.Column.Name} - ReadOnly:{e.Column.ReadOnly}"); } } }
但事情總是沒有這麼美好,自訂的 DataGridView 控件,一直沒有辦法記錄到 DataGridViewColumn.ReadOnly,利用中斷點才發現,為什麼是 DataGridViewTextColumn 加進 DataGridView.Columns 後才設定 DataGridViewTextColumn 的相關屬性設定,ColumnsAdded 完全派不上用場,Orz
嘗試把 DataGridViewColumn 屬性設定,手動搬移到 DataGridView.Columns.AddRange() 前,Columns.Added 就抓的到 ReadOnly,不過當在設計階段有動到 DataGridViewColumn 設定值,又回復到上圖的順序,而且 Designer.cs 還是不要去亂動比較好,>.<
以前看 Designer.cs 都沒有特別感覺,這次剛好注意到這個點,記錄一下
沒有留言:
張貼留言