1. 程式人生 > >DataGridView 動態綁定 CheckBox

DataGridView 動態綁定 CheckBox

fault 綁定 通過 object enter new init chang splay

下面演示如何在 DataGridView 中動態綁定 CheckBox:

public class Test
{
    /// <summary>
    /// 構造器
    /// </summary>
    public Test()
    {
        InitializeComponent();
        //生成全選checkbox
        GenerateCheckbox();
    }
/// <summary> /// 全選按鈕的選擇事件 /// </summary> /// <param name="sender"></param>
/// <param name="e"></param> private void checkboxAll_CheckedChanged(object sender, EventArgs e) { foreach (DataGridViewRow dr in dataGridView1.Rows) { dr.Cells[0].Value = ((CheckBox)dataGridView1.Controls.Find("checkboxAll", true)[0]).Checked; } }
/// <summary> /// 生成全選Checkbox /// </summary> private void GenerateCheckbox() { //檢查 dataGridView1 中是否至少綁定了一列 if (string.IsNullOrEmpty(dataGridView1.Columns[0].Name)) return; //DataGridView 中專門用來顯示 Checkbox 控件的列對象;dataGridView1 中添加此對象後,綁定數據時就會自動為每行創建一個新的 CheckBox 控件
DataGridViewCheckBoxColumn gridViewCheckBoxCol = new DataGridViewCheckBoxColumn { Width = 50, HeaderText = "", DefaultCellStyle = { Alignment = DataGridViewContentAlignment.MiddleCenter }, ReadOnly = false //若為 true 則無法選擇 CheckBox }; //把 dataGridView1 的第一列設置成 CheckBox 格式的列 dataGridView1.Columns.Insert(0, gridViewCheckBoxCol); //獲取 dataGridView1 中表示單元格顯示區域的矩形,通過矩形的位置來設置 CheckBox 的相對位置 Rectangle rectangle = dataGridView1.GetCellDisplayRectangle(0, -1, true); rectangle.X = rectangle.Location.X + rectangle.Width + 20; rectangle.Y = rectangle.Location.Y + rectangle.Height + 10; //新建一個用於“全選”的 CheckBox 對象 checkboxAll CheckBox chkOfAll = new CheckBox(); chkOfAll.Name = "checkboxAll"; chkOfAll.Size = new Size(18, 18); chkOfAll.Location = rectangle.Location; //為 checkboxAll 綁定全選事件 chkOfAll.CheckedChanged += new EventHandler(checkboxAll_CheckedChanged); //把 checkboxAll 添加到 dataGridView1 中 dataGridView1.Controls.Add(chkOfAll); } }

DataGridView 動態綁定 CheckBox