【问题标题】:Prevent row selection in datagrid when clicking on a checkbox cell单击复选框单元格时防止在数据网格中选择行
【发布时间】:2010-10-14 10:02:30
【问题描述】:

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

我到处搜索,找到了解决一半问题的几个解决方案,但我没有找到任何 100% 阻止我点击复选框时所选行发生变化的东西。

【问题讨论】:

    标签: c# datagridview checkbox selection


    【解决方案1】:

    想出了一个解决办法。

    我没有监听 SelectionChanged 事件,而是监听了 CellMouseClick 事件,然后切换了我的 own 标志以选择哪一行。

    我还更改了默认行样式,以便不指示选择了哪一行。然后我添加了一些代码来更改根据 my own 行选择的行的行样式。


    下面是用于在某些列上侦听 CellMouseClicks 的代码just,其余部分非常特定于我的应用程序。
        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...
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      相关资源
      最近更新 更多