2010-10-08 130 views

回答

15

我有同樣的問題,並沒有在工作。我工作的解決方案是將'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

3

設置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 ... 
    } 
} 
17

我有相當多的麻煩,這一點我自己。我有一個用戶控件,在應用程序/表單加載時填充了一個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

1

邊界數據後,只需撥打

dataGridView.ClearSelection(); 

我想你試過數據設置爲dataGrindView之前調用它,如果你甚至沒有試過它

+0

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

0

如果我理解Q.這可以防止數據綁定後選擇顯示單元格。 所以背面顏色保持白色。您也可以編輯列並將其設置在那裏。

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

你應該叫:ClearSelection事件之後:DataBindingComplete

0

我也想只讀DataGridView的,在我的情況下,一個單獨的線程中慢慢獲得數據,並通過多遞給GUI線程線程列表和窗體計時器。在這種方法中,GUI線程根據需要擴展數據網格,同時允許瀏覽。

與選擇上述建議可能會被隱藏,但沒有人能阻止細胞得到復位,當我的GUI線程與選擇調用dataGridView.Rows.Add()。這包括掛鉤事件以防止選擇,並禁用編輯模式。

我發現我想與

dataGridView.AllowUserToAddRows = false; 

行爲現在我有一個只讀的動態分級,異步加載數據網格。

我不喜歡BackgroundWorker解決方案,因爲進度對我的加載代碼來說是一個負擔。我也不喜歡在每次刷新網格時重建新的DataTable的要求。我無法找到正在構建的DataTable刷新DataGridView的任何提示,但似乎應該可以這樣做。

-1

我有同樣的問題,並通過覆蓋的GridView控件

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

的OnPropertyChanged事件確保您不會調用該方法從表單構造加載數據解決它。如果從form.load()調用它

也DataGridView的後裝做

DataGridView.Rows[0].Selected = false; 
0

我有同樣的問題在我的情況,而不是集中的第一行的知名度爲false。最好設置GridColor值以避免SelectionChanged事件的風險。

  1. DataBindingComplete事件

    將dgv.ClearSelection(),並設置GridColor您DataGridView的背景色。

  2. 在您的填充方法/觸發事件中,將GridColor設置爲可見顏色(例如:灰色)。

0

大多數情況下,它是由一個小錯誤引起的,也許datagridview設置在一個組框上。如果有更多的組框,則選擇將停止在第一個組框上,因此請按優先級保留組框。