2011-07-25 9 views
6

の行インジケータIは、基礎となる行を選択し、右マウスクリックを処理するためのWinFormsのDataGridViewに次のコードがあります。場所のDataGridView "の手動で選択された行

private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button != MouseButtons.Right) return; 

     var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y); 
     dataGridViewTestSteps.ClearSelection(); 
     dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true; 
    } 

を...今、これが正常に動作します小さなインジケータは正しい行に配置されません(下の図を参照)。だから基本的に私は上記の方法で何が欠けているのだろうか?

falsely placed row indicator

答えて

5

行ヘッダーカーソルは現在の行ではなく選択された行を示している - それらが実際に異なっている、複数の選択された行が、唯一の現在の行を有することができるからです。

は、代わりにこのコードを試してみてください。

private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button != MouseButtons.Right) return; 

    var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y); 
    //dataGridViewTestSteps.ClearSelection(); 
    //dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true; 
    dataGridViewTestSteps.CurrentCell = dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Cells[0]; 
} 
+0

ああが、おかげでデビッド...理にかなっていると動作します! –

関連する問題