2013-08-21 25 views
0

所以我正在製作一個表單,並且我想讓左右鍵只對應於我在表單上的numericUpDown框。所以我寫的代碼如下:停止使用ProcessCmdKey在C#中觸發事件的密鑰?

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == Keys.Right) 
     { 

      numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1); 
     } 
     if (keyData == Keys.Left) 
     { 
      try 
      { 
       numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1); 
      } 
      catch { } 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 

但是它似乎還在做形式不同對象之間移動如果是這樣的選擇的觀點是什麼目前的默認操作。如何停止默認操作?

+0

做你嘗試 「返回true;」對於您不希望處理繼續的情況? – deepee1

+1

你的代碼甚至不會編譯。你應該返回一個bool的方法中沒有返回語句。 – tnw

+0

不,我沒有迴歸真實......這似乎在大多數時間都有效(除非我很快按下按鍵)......它不是那種打破了形式的東西,所以如果有人決定偶爾做它。謝謝! – user2678856

回答

1

如果您不想執行默認操作,則需要返回true。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Right) 
    { 

     numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1); 
     return true; 
    } 
    if (keyData == Keys.Left) 
    { 
     try 
     { 
      numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1); 
      return true; 
     } 
     catch { } 
    } 
} 
0
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Right){ 
     numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1); 
     return true; 
    } 
    else if (keyData == Keys.Left){ 
     try { 
      numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1);    
     } 
     catch { } 
     return true; 
    }   
    return base.ProcessCmdKey(ref msg, keyData); 
} 

注:它看起來像你沒有張貼運行該代碼?我強烈建議你發佈你的實際代碼,你的代碼甚至沒有編譯,因爲缺少return。而你的代碼缺少處理其他密鑰所需的return base.ProcessCmdKey(ref msg, keyData);

1

也許你應該返回true來表示你已經處理了關鍵筆畫消息,以便沒有其他控件得到它。

+0

謝謝,這是完全正確的。 – user2678856

0

,你可以添加一個事件hanlder並做到這一點:

private void keypressed(Object o, KeyPressEventArgs e) 
{ 
    if (e.KeyCode == Keys.Right || e.KeyCode == Keys.Left) 
    { 

     e.Handled = true; //this line will do the trick 
     //add the rest of your code here. 

    } 
} 
相關問題