【发布时间】:2010-10-14 10:02:30
【问题描述】:
我有一个 DataGridView,其中每一行都有一个复选框。我只希望在用户单击其中一个文本单元格时更改所选行。但是,如果单击复选框,我仍然希望复选框更改其状态并捕获此事件。
我到处搜索,找到了解决一半问题的几个解决方案,但我没有找到任何 100% 阻止我点击复选框时所选行发生变化的东西。
【问题讨论】:
标签: c# datagridview checkbox selection
我有一个 DataGridView,其中每一行都有一个复选框。我只希望在用户单击其中一个文本单元格时更改所选行。但是,如果单击复选框,我仍然希望复选框更改其状态并捕获此事件。
我到处搜索,找到了解决一半问题的几个解决方案,但我没有找到任何 100% 阻止我点击复选框时所选行发生变化的东西。
【问题讨论】:
标签: c# datagridview checkbox selection
想出了一个解决办法。
我没有监听 SelectionChanged 事件,而是监听了 CellMouseClick 事件,然后切换了我的 own 标志以选择哪一行。
我还更改了默认行样式,以便不指示选择了哪一行。然后我添加了一些代码来更改根据 my own 行选择的行的行样式。
void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
// Make sure it is a left click
if(e.Button == MouseButtons.Left)
{
// Make sure it is on a cell
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
{
// Only allow certain columns to trigger selection changes (1 & 2)
if (e.ColumnIndex == 1 || e.ColumnIndex == 2)
{
// Set my own private selected row index
setSelectedRow(e.RowIndex);
}
else
{
// Actions for other columns...
}
}
}
}
【讨论】: