2014-12-05 110 views
-1

我有一個datagridview我已經實現了一個搜索功能。通過在datagridview處於焦點時輸入字符,將選擇包含字符的網格的第一行。C#Datagridview選定行

我用:

dtgView[index].Selected = true; 
dtgView.FirstDisplayedScrollingRowIndex = index; 

行被選中,但是當我按下向上或向下箭頭,或從選定的行上下導航,在DataGridView從行索引0在DataGrid開始,而不是新選擇的行?

這裏是OP's原始代碼/法

private void dtgView_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyValue >= 65 && e.KeyValue <= 90) 
    { 
     searchStrings += e.KeyCode; 
     for (int i = 0; i < dtgView.RowCount; i++) 
     { 
      if (dtgView.Rows[i].Cells[0].Value.ToString(). 
       Substring(0, searchStrings.Length) == searchStrings) 
      { 
       dtgView.ClearSelection(); 
       dtgView.FirstDisplayedScrollingRowIndex = i; 
       dtgView.Rows[i].Selected = true; 
       dtgView.Rows[i].Cells[0].Selected = true; 
       break; 
      } 
     } 
    } 

} 
+0

'Duta'或許可以顯示完整的方法塊(s)表示,關於以確保你沒有任何其他事件,將基於按鍵按下觸發.. 2行代碼真的沒有任何人在這裏任何正義... – MethodMan 2014-12-05 21:04:17

+0

什麼'鍵是你想使用我認爲你應該檢查有更好的方法來做到這一點 – MethodMan 2014-12-05 21:13:19

+0

也許這樣,但這並不解決我選擇的行的問題。 – duta 2014-12-05 21:14:56

回答

0

這是對我的DTG事件KEY_UP:

private void dtgView_KeyUp(object sender, KeyEventArgs e) 
     { 
      if (e.KeyValue >= 65 && e.KeyValue <= 90) 
      { 
       searchStrings += e.KeyCode; 
       for (int i = 0; i < dtgView.RowCount; i++) 
       { 
        if (dtgView.Rows[i].Cells[0].Value.ToString(). 
         Substring(0, searchStrings.Length) == searchStrings) 
        { 

         dtgView.ClearSelection(); 
         dtgView.FirstDisplayedScrollingRowIndex = i; 
         dtgView.Rows[i].Selected = true; 
         dtgView.Rows[i].Cells[0].Selected = true; 

         break; 
        } 
       } 
      } 

     } 
+0

這需要在你的原始文章'Duta'不作爲答案。 – MethodMan 2014-12-05 21:08:20

+0

Im sorry對不起,這是我的第一篇文章堆棧溢出。 – duta 2014-12-05 21:09:38