我有一个DataGridView,其中每行都有一个复选框。我只希望当用户点击其中一个文本单元格时更改所选行。但是,如果单击一个复选框,我仍然希望让复选框更改其状态并捕获此事件。
我到处搜索并找到了几个可以解决问题的一半的解决方案,但是当我点击我的复选框时,我没有发现任何100%阻止所选行的更改。
答案 0 :(得分:1)
找出解决方法。
我没有侦听SelectionChanged事件,而是听取了CellMouseClick事件,然后切换了我的自己的标志,选择了哪一行。
我还更改了默认的行样式,因此没有指示选择了哪一行。然后我添加了一些代码来更改根据我自己的行选择的行的行样式。
<小时/> 下面是用于在某些列上监听CellMouseClicks的代码 ,其余的非常特定于我的应用程序。
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...
}
}
}
}