2015-10-06 27 views
0

我的C#Windows窗體應用程序分別爲A,B和C分別有3個文本框。就像一個簡單的得分板。在C#中一個接一個地使用兩個關鍵事件

我想要做的是當我按下'A'然後'1'時,下面文本框中的值應該增加5,當我按'B'然後'1'時應該發生B下面的文本框和'C'相同。

只記得我不想使用組合鍵。下面是供您參考代碼:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.A) 
    { 
     if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
     { 
      int vA = int.Parse(textBox1.Text); 
      vA += 5; 
      textBox1.Text = (String)vA.ToString(); 
     } 
    } 

    if (e.KeyCode == Keys.B) 
    { 
     if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
     { 
      int vB = int.Parse(textBox2.Text); 
      vB += 5; 
      textBox2.Text = (String)vB.ToString(); 
     } 
    } 
} 
+0

如果你想先按A,B或C,然後按下一個數字,那麼你不能像你那樣嵌套這些if語句。首先檢查當前按下的按鍵是否爲「A」,然後在同一範圍內檢查當前按下的按鍵是否爲「1」,這是永遠不會的。 – Glubus

+0

@PranavPatel我看到他的請求沒有問題。是的,他正在尋求幫助。 –

+0

@PranavPatel他的英語可能就是他爲什麼這樣問他的問題的原因。我相信你可以聯繫。 – Glubus

回答

1

考慮到你不想使用組合鍵,你想要做的是類似這樣的東西(可能是清理一點點)。

TextBox target; 
private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 

    if (e.KeyCode == Keys.A) 
    { 
     target = textBox1; 
    } 

    if (e.KeyCode == Keys.B) 
    { 
     target = textBox2; 
    } 

    if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
    { 
     if(target != null) 
     { 
      int vA = int.Parse(target.Text); 
      vA += 5; 
      target.Text = (String)vA.ToString(); 
     } 
    } 
} 
+0

謝謝老兄。這工作。非常感謝。 :) –

+0

好。玩的開心! – Glubus

0

我們可以使用一個成員變量來保持最後按下的鍵的值,並在KeyUp方法中使用該變量來檢查條件。

public partial class Form1 : Form 
{ 
    Keys lastkeyPressed = Keys.Enter; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (lastkeyPressed == Keys.A) 
     { 
      if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
      { 
       int vA = 0; 
       int.TryParse(textBox1.Text, out vA); 
       vA += 5; 
       textBox1.Text = (String)vA.ToString(); 
      } 
     } 

     if (lastkeyPressed == Keys.B) 
     { 
      if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
      { 
       int vB = 0; 
       int.TryParse(textBox2.Text, out vB); 
       vB += 5; 
       textBox2.Text = (String)vB.ToString(); 
      } 
     } 

     if (lastkeyPressed == Keys.C) 
     { 
      if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) 
      { 
       int vC = 0; 
       int.TryParse(textBox3.Text, out vC); 
       vC += 5; 
       textBox3.Text = (String)vC.ToString(); 
      } 
     } 
     lastkeyPressed = e.KeyCode; 
    } 
} 
相關問題