单击复选框单元格时阻止数据网格中的行选择

时间:2010-10-14 00:34:46

标签: c# datagridview checkbox selection

我有一个DataGridView,其中每行都有一个复选框。我只希望当用户点击其中一个文本单元格时更改所选行。但是,如果单击一个复选框,我仍然希望让复选框更改其状态并捕获此事件。

我到处搜索并找到了几个可以解决问题的一半的解决方案,但是当我点击我的复选框时,我没有发现任何100%阻止所选行的更改。

1 个答案:

答案 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...
                }
            }
        }
    }