2012-05-16 27 views
3

我使用以下代碼與數字鍵盤一起使用。C#中的數字鍵盤密鑰代碼

if (e.KeyCode == Keys.NumPad0 || e.KeyCode == Keys.D0) 
{ 
    MessageBox.Show("You have pressed numpad0"); 
} 
if (e.KeyCode == Keys.NumPad1 || e.KeyCode == Keys.D1) 
{ 
    MessageBox.Show("You have pressed numpad1"); 
} 

而且還爲其他鍵盤鍵。但是我想知道我可以如何做到這一點對於位於數字鍵旁邊的「+」,「*」,「/」,「 - 」,「。」。

在此先感謝

+0

糟糕,關於近距離投票,我在投票後發現了問題。 – zmbq

+0

你可以用一個文本框和一個按鍵事件來編寫一個應用程序,並打印出e.KeyCode的值嗎?那會準確地告訴你你需要的價值。 – carlosfigueira

回答

3

爲 「+」, 「*」, 「/」,我們可以使用KeyDown事件和 「 - 」, 「」我們可以使用KeyPress事件。

這裏是代碼:

private void button1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Add) 
     { 
      MessageBox.Show("You have Pressed '+'"); 
     } 
     else if (e.KeyCode == Keys.Divide) 
     { 
      MessageBox.Show("You have Pressed '/'"); 
     } 
     else if (e.KeyCode == Keys.Multiply) 
     { 
      MessageBox.Show("You have Pressed '*'"); 
     } 
    } 
private void button1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == '.') 
     { 
      MessageBox.Show("You have pressed '.'"); 
     } 
     else if (e.KeyChar == '-') 
     { 
      MessageBox.Show("You have pressed '-'"); 
     } 
    } 
9

檢查出整個Keys enum。您有Keys.Mutiply,Keys.Add等等。

注意Keys.D0數字鍵盤0,它的非數字鍵盤0

+0

除此之外,未表示的唯一數字鍵是「Enter」鍵。看到這裏如何解決這個問題:http://stackoverflow.com/questions/5989380/sending-specific-keys-on-the-numpad-like-or-enter-simulating-a-keypress – yamen

+0

謝謝。什麼是 」 。 」 , 」 - 」? – aliboy38

+0

- 是Keys.Minus。我不知道這個點是什麼。也許Keys.Separator? – zmbq

0

我以前switch做我的工作。

我正在製作一個計算器,並在目標文本框上創建了一個KeyDown。然後我用:

switch (e.KeyCode) 
{ 
    case Keys.NumPad1: 
     tbxDisplay.Text = tbxDisplay.Text + "1"; 
    break; 
    case Keys.NumPad2: 
     tbxDisplay.Text = tbxDisplay.Text + "2"; 
    break; 
    case Keys.NumPad3: 
     tbxDisplay.Text = tbxDisplay.Text + "3"; 
    break; 
} 

其他的事情要考慮的是,如果用戶再在屏幕上點擊按鈕的,焦點就會從文本丟失,關鍵條目將不再起作用。但這很容易用按鈕上的.focus()修復。