2012-09-04 313 views
1

我將我的表單的KeyPreview設置爲true。爲什麼我的事件處理程序只輸入一次?

我試圖移動到下一個單元格,如果DataGridView單元格已經有一個值。我有這樣的代碼:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
    if (this.ActiveControl == dataGridViewPlatypus) 
    { 
     var currentCell = dataGridViewPlatypus.CurrentCell; 
     if (currentCell.Value.ToString().Length == 1) 
     { 
      ;//Now what? 
      SendKeys.Send("{DOWN}"); 
     } 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

設置於內「如果」我到那裏,我第一次在一個單元格中輸入一個值(斷點想必它要麼是長度爲0或1的長度,但看着在當前currentCell的值,它是「格式化文本」值==「」,我沒有看到任何其他可能的屬性來辨別單元格內容是什麼)。

「如果」失敗,並且它下降到「返回基地」。線。

當我在單元格中輸入第二個值時(例如單元格中的可見內容從「2」更改爲「22」),我甚至沒有達到斷點。爲什麼???

注:這是一個問題,我問這裏的變化:How can I programmatically move from one cell in a datagridview to another?

回答

1

現在你正在測試,如果在框中的值的文本表示有且只有一個字符的長度。

如果我正確理解你的問題,你應該嘗試 currentCell.Value.ToString().Length > 0

+0

應該總是要麼是0或1,因爲當1應該下降到下一個單元格。無論如何,事件處理程序只能輸入一次。 –

相關問題