2016-11-13 94 views
1

我有一個datagridview有5列。 datagridview中的列是[商品代碼,說明,數量,價格&合計]。在DataGridView中處理Enter鍵

它是如何應該工作: 當用戶進入itemcode,描述和價格應該從數據庫中讀取並顯示結果各自的領域。然後數量應該由用戶輸入。

我想: 當用戶在第一柱(產品編號)進入值我想要的,下一個信元被選擇應該是第3列(數量)。然後,如果輸入數量並且用戶按下輸入按鈕,則選擇的下一個單元應該是下一行的第一列(商品代碼)。

問題: 我已經嘗試了幾個代碼,但它不工作。問題是在第一列(物料代碼)中輸入物料代碼時,下一個單元格的位置是第三列(數量)的第二行的。它應該移動到同一行的第3列(數量),即第1行

下面是我的代碼,我已經使用:

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) 
    { 
     currentRow = dataGridView1.CurrentCell.RowIndex; 
     currentColumn = dataGridView1.CurrentCell.ColumnIndex; 

    } 

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
    { 

     if (currentColumn == dataGridView1.Columns.Count - 5) 
     {     
      dataGridView1.CurrentCell = dataGridView1[currentColumn + 2, currentRow]; 

     } 
     else 
     { 
      dataGridView1.CurrentCell = dataGridView1[currentColumn - 2, currentRow + 1]; 
     } 
    } 
+0

使用foreach循環,以確定哪些行中的DataGridView已選定.. – MethodMan

+0

我應該怎麼做呢? @MethodMan –

+0

做一個谷歌搜索如何找到使用foreach循環的DataGriadView的選定行乾杯.. – MethodMan

回答

0

感謝this崗位。

我編輯了一點點,這裏是我的代碼工作。

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) 
    { 
     icolumn = dataGridView1.CurrentCell.ColumnIndex; 
     irow = dataGridView1.CurrentCell.RowIndex; 
     int i = irow; 
     if (keyData == Keys.Enter) 
     { 
      if (icolumn == dataGridView1.Columns.Count - 5) 
      { 
        dataGridView1.CurrentCell = dataGridView1[icolumn + 2, irow]; 
      } 
      else 
      { 
       dataGridView1.CurrentCell = dataGridView1[icolumn - 2, irow + 1]; 
      } 
      return true; 
     } 


     return base.ProcessCmdKey(ref msg, keyData); 
    } 
相關問題