2017-05-31 67 views
0

我正在寫一個WinForms應用程序,其中用戶可以在GridView控件,但只有高達FF在一個單元格中輸入十六進制值。我想讓用戶輸入長整型值而不用按回車或製表符,如果用戶輸入FFFF值應該到gridview的兩個單元格。我試圖通過計算下面的2個鍵來自動將焦點設置到下一個單元格。C#gridview的焦點設置到下一個單元格自動

我的代碼不工作我不知道如果我的計算策略是正確的。如果我錯了,請糾正我。

private void hexGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    e.Control.KeyPress += new KeyPressEventHandler(CheckKey); 
} 

private void CheckKey(object sender, KeyPressEventArgs e) 
{ 
    e.KeyChar = char.ToUpper(e.KeyChar); 
    char c = e.KeyChar; 

    if (!((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || validForAll.Contains((Keys)e.KeyChar))) 
    { 
      e.Handled = true; 
    } 
    else 
    { 
      if (++count > 2) // or something same 
      { 
       count = 0; 

       int r = hexGridView1.CurrentCell.RowIndex; 
       int ci = hexGridView1.CurrentCell.ColumnIndex; 
       ++r; //just for testing 
       hexGridView1.CurrentCell = hexGridView1[r, ci]; 
       hexGridView1.CurrentCell.Selected = true; 
       hexGridView1.BeginEdit(true); //require ? 
      } 
     } 
} 

回答

0

下面的代碼有修復我使用Count使用函數的問題。

  if(hexGridView1.CurrentCell.EditedFormattedValue.ToString().Length == 2) 
      { 
       int iColumn = hexGridView1.CurrentCell.ColumnIndex; 
       int iRow = hexGridView1.CurrentCell.RowIndex; 
       if (iColumn == hexGridView1.ColumnCount - 1) 
       { 
        if (hexGridView1.RowCount > (iRow + 1)) 
        { 
         hexGridView1.CurrentCell = hexGridView1[0, iRow + 1]; 
        } 
        else 
        { 
         //focus next control 
        } 
       } 
       else 
        hexGridView1.CurrentCell = hexGridView1[iColumn + 1, iRow]; 
      } 
相關問題