我有DataGridView
列CheckBox
,我的问题是当我选择它所属的行时,如何自动勾选CheckBox
?我已启用DataGridView
的完整行选择。
答案 0 :(得分:1)
DataGridView
有一个名为SelectionChanged
的事件,每次用户选择不同的行时都会触发该事件(从技术上讲,如果启用了多选,则如果选择被扩展或缩小,它也将触发) 。如果您将事件处理程序附加到此处,则可以获取DGV中当前选定的行并操纵DataGridViewCheckBoxColumn
单元格的值。
使用DGV时,大部分时间我都是通过绑定源处理绑定数据。我通常发现处理绑定源引发的事件并操纵其绑定列表或底层模型更可靠,但如果您没有使用绑定数据,则此路由将不可用。
答案 1 :(得分:1)
我认为这不是解决这个问题的最佳方案,但这可能会很好。
我在datagridview中设置的属性是:
[MultiSelect = False]
[SelectionMode = FullRowSelect]
在 datagridview_CellClick Event
中必须添加以下代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
this.dataGridView1.Rows[e.RowIndex].Cells["colSelect"].Value = true;
}
如果您计划只需点击一次,则必须应用此代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
var count = from hasValue in dataGridView1.Rows.Cast<DataGridViewRow>()
where Convert.ToBoolean(hasValue.Cells["colSelect"].Value) == true
select hasValue;
if(count.Count() <= 0)
this.dataGridView1.Rows[e.RowIndex].Cells["colSelect"].Value = true;
}
}
另一种方式:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
foreach (DataGridViewRow row in this.dataGridView1.Rows)
row.Cells["colSelect"].Value = false;
this.dataGridView1.Rows[e.RowIndex].Cells["colSelect"].Value = true;
}
}