我有一个数据网格视图。它有 2 个布尔类型的列。现在我想要做的是,当我点击一个复选框时,同一行中的另一个复选框应该被取消选中。也就是说,一次只能在特定行中选中一个复选框。用户不能同时选中 2 个复选框。
我怎样才能做到这一点?我尝试使用 cellcontentclick 和 cellcontentChanged 事件。没有任何作用。
任何输入?
我有一个数据网格视图。它有 2 个布尔类型的列。现在我想要做的是,当我点击一个复选框时,同一行中的另一个复选框应该被取消选中。也就是说,一次只能在特定行中选中一个复选框。用户不能同时选中 2 个复选框。
我怎样才能做到这一点?我尝试使用 cellcontentclick 和 cellcontentChanged 事件。没有任何作用。
任何输入?
您可以使用 CellEndEdit 事件或 CellLeave 事件
当您在编辑后离开单元格时,此事件将触发。在以下代码段中,Column1 是您的第一个复选框,Column2 是您的另一个复选框。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["Column1"].Value))
dataGridView1.Rows[e.RowIndex].Cells["Column2"].Value = false;
}
使用DataGrid_CellEditEnding
在遍历 DataSource 的过程中,如果您发现任何选中的列 ( boolean true
),则将其取消选中 ( boolean false
)。希望它会帮助你
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
foreach (var Item in dataGridView1.ItemsSource)
{
if(Item.isChecked)
Item.isChecked = false;
}
if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["Column1"].Value))
dataGridView1.Rows[e.RowIndex].Cells["Column2"].Value = false;
}