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;
    } 
}