C# DataGridView默认行/单元格选择问题

C# DataGridView默认行/单元格选择问题,c#,events,datagridview,selectionchanged,C#,Events,Datagridview,Selectionchanged,DataGridView设置为全行选择。 需要一种清除默认选定行的方法,该行是由DataGridView的默认属性完成的 我还使用SelectionChanged事件 该dgv有4列 如果我保留默认的行选择,SelectionChanged在加载时会触发4次,我根本不希望它触发 我已尝试使用RowsPostPaint事件,该事件清除选择,并且不会触发SelectionChanged事件,但之后我无法选择任何行 有什么想法吗? 感谢要取消选择初始行选择,您可以枚举SelectedRows并将Sel

DataGridView设置为全行选择。 需要一种清除默认选定行的方法,该行是由DataGridView的默认属性完成的

我还使用SelectionChanged事件 该dgv有4列

如果我保留默认的行选择,SelectionChanged在加载时会触发4次,我根本不希望它触发

我已尝试使用RowsPostPaint事件,该事件清除选择,并且不会触发SelectionChanged事件,但之后我无法选择任何行

有什么想法吗?
感谢

要取消选择初始行选择,您可以枚举SelectedRows并将Selected属性设置为false。要防止选择初始行时触发SelectionChanged事件,请在取消选择后手动添加该事件

例如,在窗体的加载事件中:

用这个

在表单加载中:

     datagridview.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(datagridview_DataBindingComplete);
对于听众:

    private void datagridview_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        datagridview.ClearSelection();
    }

但请注意,无论何时更改数据源,默认选择都会隐藏。

填充datagrid后,请尝试此选项

datagrid.com


我目前的工作如下,但有更好的方法吗?我存储int p=0,然后如果p!=3.p++;ClearSelection值达到3后,将继续SelectionChanged方法。该方法试图以某种方式实现上述功能,但遇到问题。下面是该应用程序的运行情况:ListView,带有多个选项卡的TabControl。在几个选项卡中包含DataGridView。从ListView中选择项目会填充选项卡/DataGridView中的所有数据。从ListView中选择项目时,会将选项卡索引重置为0,该选项卡不包含dgv。填充该数据时,我需要清除默认的选定行,该行始终是我使用SelectedChanged后第一次填充的行。在ListView中选中新项目,并再次清除新数据的dgv,从而触发SelectedChanged事件,并且需要在它再次命中事件之前清除它。希望我也能解释清楚这一点。所以,DataBindingComplete不仅在数据绑定完成时运行,而且在单元格绑定时运行。因此,如果您想做比清除选择更重要的事情,那么该事件即使不比无用更糟糕,也几乎是无用的。
    private void datagridview_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        datagridview.ClearSelection();
    }