2011-07-02 35 views
5

私はDataGridViewのこの奇妙な動作に不満を抱きました。ClearSelection後にDatagridviewセルが選択されました

データバインディングされている場合、グリッドにフォーカスがない場合でも1つのセルが選択されます。私のこの質問で提案されているように私はこの

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を置く必要があります。 –

関連する問題