DataGridView第一列,第一行,加载时选择,我不想这

问题描述:

因此,基本上第一行中的第一列总是被选中,我不能找出一种方法来让它gridview有没有选定的细胞。任何帮助?DataGridView第一列,第一行,加载时选择,我不想这

+0

为什么有第一行,col选择了一个问题? – Beth 2010-10-08 15:35:00

+13

营销人员这样说... :( – Spooks 2010-10-08 15:36:25

我有同样的问题,并没有在工作。我工作的解决方案是将'Tabstop'属性设置为False,并在数据绑定后立即调用ClearSelection()方法。

+3

不错的提示,尽管如此,仍然会触发SelectionChanged事件,这可能会导致一些问题。 – 2013-03-01 13:11:55

+0

@Aove你可以通过做这样的事情来解除选择更改事件。 “MyDataGrid.SelectionChanged - = this.MyDataGrid_SelectionChanged;”/ /做一些操作,然后通过这样做重新绑定选择更改事件,“MyDataGrid.SelectionChanged + = this.MyDataGrid_SelectionChanged;”我不知道这是否会导致一些性能问题。 – Hari 2014-07-23 09:28:20

设置DGV的CurrentCell属性后,数据绑定DGV为null:

dataGridView1.CurrentCell = null; 

注意,这样做不会阻止来自发射行和小区选择相关DGV事件;你必须添加选定行或细胞计数检查上RowEnter事件,像这样:

private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { 
    if (dataGridView1.SelectedRows.Count == 1) { 
     // Do stuff since a row is actually selected ... 
    } 
} 

我有相当多的麻烦,这一点我自己。我有一个用户控件,在应用程序/表单加载时填充了一个DataGridView。在数据绑定完成并且网格已填充/呈现后,第一行的选择似乎发生在之后。用户控件加载事件(也可能是表单加载)在此之前触发 - 因此在这些加载事件中调用gridView.ClearSelection()或取消gridView.CurrentCell并不会产生任何效果。

什么终于为我工作从DataBindingComplete事件的DataGridView本身的调用.ClearSelection()。这工作像一个魅力。

+1

这对我有用,但网格的SelectionChanged事件在选中行后仍然被调用,所以我必须在整个表单中找到丑陋的标志逻辑来找出用户选择的一排还是不行 – qwerty13579 2012-06-14 23:23:49

+0

这就是为什么我不应该只读最上面的答案。/ – 2013-03-01 13:12:33

+0

我试过了答案,并没有为我工作,这个答案有效!谢谢戴夫。 – harag 2015-06-10 10:15:50

边界数据后,只需拨打

dataGridView.ClearSelection(); 

我想你试过数据设置为dataGrindView之前调用它,如果你甚至没有试过它

+0

这不起作用;第一行仍然被选中 – qwerty13579 2012-06-14 22:59:09

如果我理解Q.这可以防止数据绑定后选择显示单元格。 所以背面颜色保持白色。您也可以编辑列并将其设置在那里。

DataGridView.DefaultCellStyle.SelectionBackColor = DataGridView.DefaultCellStyle.BackColor; 

你应该叫:ClearSelection事件之后:DataBindingComplete

我也想只读DataGridView的,在我的情况下,一个单独的线程中慢慢获得数据,并通过多递给GUI线程线程列表和窗体计时器。在这种方法中,GUI线程根据需要扩展数据网格,同时允许浏览。

与选择上述建议可能会被隐藏,但没有人能阻止细胞得到复位,当我的GUI线程与选择调用dataGridView.Rows.Add()。这包括挂钩事件以防止选择,并禁用编辑模式。

我发现我想与

dataGridView.AllowUserToAddRows = false; 

行为现在我有一个只读的动态分级,异步加载数据网格。

我不喜欢BackgroundWorker解决方案,因为进度对我的加载代码来说是一个负担。我也不喜欢在每次刷新网格时重建新的DataTable的要求。我无法找到正在构建的DataTable刷新DataGridView的任何提示,但似乎应该可以这样做。

我有同样的问题,并通过覆盖的GridView控件

protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) 
{ 
    base.OnPropertyChanged(e); 
    this.ClearSelection(); 
} 

的OnPropertyChanged事件确保您不会调用该方法从表单构造加载数据解决它。如果从form.load()调用它

也DataGridView的后装做

DataGridView.Rows[0].Selected = false; 

我有同样的问题在我的情况,而不是集中的第一行的知名度为false。最好设置GridColor值以避免SelectionChanged事件的风险。

  1. DataBindingComplete事件

    将dgv.ClearSelection(),并设置GridColor您DataGridView的背景色。

  2. 在您的填充方法/触发事件中,将GridColor设置为可见颜色(例如:灰色)。

大多数情况下,它是由一个小错误引起的,也许datagridview设置在一个组框上。如果有更多的组框,则选择将停止在第一个组框上,因此请按优先级保留组框。