2011-07-02 53 views
5

DataGridView的這種奇怪的行爲讓我感到沮喪。ClearSelection後選擇Datagridview單元格

當其數據綁定時,即使網格沒有焦點,也會選擇一個單元格。我已經採取了一些變通這樣

this.ActiveControl = textBoxPartySearch; 
dataGridView1.Refresh(); 
dataGridView1.ClearSelection(); 
dataGridView1.CurrentCell = null; 
e.Handled = true; 

在我的這個問題建議: Remove blue colored row from DataGridView WinForms

但是,這種解決方法有時不工作,使代碼混亂。

是否有任何其他免費的datagridview可用,沒有這個問題?

回答

0

更改綁定網格的方式。

首先準備數據表,然後將其分配給datagridview。

0
gvDataSources.CurrentCell.IsCurrent=false; 
gvDataSources.CurrentRow.IsCurrent = false; 
1

我有這個問題,並設法解決它通過在每個編碼事件的末尾添加myDataGridView.ClearSelection();

剛開始只是讓它在我的DataBind()方法的末尾就足夠了。然後我爲行繪畫和其他東西添加了一些自定義行爲,並停止工作(即總是選擇第一行)。

所以我會說如果你添加任何自定義事件,這可能是原因。

2

這個工作對我來說:

在構造函數中,設置綁定後,添加處理程序到DataBindingComplete事件:

dgvCommandos.DataSource = systeemCommandos; // = my List<> of objects 
dgvCommandos.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dgvCommandos_DataBindingComplete); 

的處理程序:

void dgvCommandos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    dgvCommandos.ClearSelection(); 
} 

如果您打算選擇一行(例如添加/插入新對象後),只需設置:

dgvCommandos.Rows[insertPos].Selected = true; 
+0

如果您在CellFormatting中存在與綁定時混淆的東西,則必須將其放在DataBindingComplete中。 –

相關問題