2011-07-25 48 views
6

行標誌我曾經在一個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

啊有道理..和工作,感謝大衛! –