好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#的winform开发中操作DATAGRIDVIEW中的checkbox实例

添加 CheckBox 列?的方式有两种

1、?设计时添加?

在 DataGridView 的属性面板中,通过 ?Columns 集合编辑器? 添加 DataGridViewCheckBoxColumn,设置列名(如 chkSelect)和标题文本(如“选择”)?。

若需绑定数据,需设置 DataPropertyName 为数据源中的布尔字段(如 IsSelected)。

?2、动态代码添加?

DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();

checkBoxColumn.Name = "chkSelect";

checkBoxColumn.HeaderText = "选择";

checkBoxColumn.Width = 50;

dataGridView1.Columns.Add(checkBoxColumn);

?注意?:若需绑定数据源,需确保数据源包含对应布尔字段,否则排序时选中状态会丢失?。

?2. 处理 CheckBox 交互?

?获取选中行数据?

foreach (DataGridViewRow row in dataGridView1.Rows)

{

    bool isChecked = Convert.ToBoolean(row.Cells["chkSelect"].Value);

    if (isChecked)

    {

        string id = row.Cells["ID"].Value.ToString(); // 获取其他列数据

    }

}

?关键点?:需调用 EndEdit() 提交编辑状态,否则未结束编辑的行无法获取值?。

?全选/取消全选?

// 全选

private void btnSelectAll_Click(object sender, EventArgs e)

{

    foreach (DataGridViewRow row in dataGridView1.Rows)

    {

        row.Cells["chkSelect"].Value = true;

    }

}

// 取消全选

private void btnCancelAll_Click(object sender, EventArgs e)

{

    foreach (DataGridViewRow row in dataGridView1.Rows)

    {

        row.Cells["chkSelect"].Value = false;

    }

}

?说明?:通过遍历所有行修改 CheckBox 值?。

?3. 实现单选功能?

若需单选(类似 RadioButton),需在 CellClick 事件中处理:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

{

    if (e.ColumnIndex == dataGridView1.Columns["chkSelect"].Index)

    {

        foreach (DataGridViewRow row in dataGridView1.Rows)

        {

            row.Cells["chkSelect"].Value = (row.Index == e.RowIndex);

        }

    }

}

?逻辑?:点击某行 CheckBox 时,取消其他行的选中状态?。

?4. 绑定数据源时的注意事项?

?数据源需包含布尔字段?:例如 DataTable 中需有 IsSelected 列,否则排序或刷新后选中状态会丢失。

?避免重复添加列?:若已通过代码添加 CheckBox 列,绑定数据源时无需再次添加?3。

?5. 常见问题解决?

?选中状态不保存?:确保 CheckBox 列绑定到数据源的布尔字段,或通过 Tag 属性存储额外数据?。

?跨线程操作?:若需在非 UI 线程更新 DataGridView,使用 Invoke 方法?18。

通过以上方法,可灵活实现 DataGridView 中 CheckBox 的增删改查及交互功能。


查看更多关于C#的winform开发中操作DATAGRIDVIEW中的checkbox实例的详细内容...

  阅读:24次