在c#中一个接一个地使用两个键事件

本文关键字:一个 两个 事件 | 更新日期: 2023-09-27 18:16:09

我有3个文本框在我的c# 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();
        }
    }
}

在c#中一个接一个地使用两个键事件

考虑到你不想使用组合键,你想做的是类似于这一点(可能清理一下)。

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