C#中先后使用两个Key Events
Use two Key Events one after another in C#
我的 C# 中有 3 个文本框 Windows 分别用于 A、B 和 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();
}
}
}
考虑到您不想使用组合键,您想要做的与此类似(可能稍微清理一下)。
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();
}
}
}
我们可以使用成员变量来保存最后按下的键的值,并在 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;
}
}
我的 C# 中有 3 个文本框 Windows 分别用于 A、B 和 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();
}
}
}
考虑到您不想使用组合键,您想要做的与此类似(可能稍微清理一下)。
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();
}
}
}
我们可以使用成员变量来保存最后按下的键的值,并在 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;
}
}