代码之家  ›  专栏  ›  技术社区  ›  tbridge

在单击复选框单元格时阻止在DataGrid中选择行

  •  1
  • tbridge  · 技术社区  · 15 年前

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   tbridge    15 年前

    想出了一个解决办法。

    我没有听SelectionChanged事件,而是听CellMouseClick事件,然后切换我的 拥有 选定行的标志。

    我还更改了默认的行样式,这样就没有显示选择了哪一行。然后我添加了一些代码来更改根据 我自己的 行。


    下面是代码 只是 对于在某些列上收听CellMouseClick,其余的部分非常特定于我的应用程序。
        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...
                    }
                }
            }
        }
    
    推荐文章