将什么传递给检查键是否被按下的方法?

What to pass to Method that Checks if Key is Pressed?

好的,所以我创建了一个名为 KeyCheck() 的方法,它应该检查是否按下了某个键(特别是回车键),如果是,它将按下 button1

不幸的是,当我调用该方法时,我不确定要传递给它什么。我想让它知道什么时候按下回车键。

public partial class Form1 : Form
{
    public void GameStart()
    {
        richTextBox1.WordWrap = true;
        richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
        richTextBox1.Text = "Hello, Welcome to Grandar!";
    }

    public Form1()
    {
        InitializeComponent();
        GameStart();
        //What variable do I pass to KeyCheck Method?
        KeyCheck();
    }

    private void KeyCheck(KeyPressEventArgs k)
    {
        if (k.KeyChar == (char)Keys.Enter)
        {
            button1.PerformClick();
        }
    }

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }
}

查看此页面:https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=vs.110).aspx

您需要与其他方法类似的东西,包括发送者对象和事件参数。

if (e.KeyCode < Keys.Enter) {
    //Your logic
}

这里有两点需要注意:

a) 你真的想像你的示例代码建议的那样直接调用 KeyCheck 还是应该将它连接为表单上的处理程序(你所询问的信息将自动提供 -将需要更改签名以与您在其他一些方法中使用的标准处理程序保持一致。

b) 我认为您不能像现在这样调用 KeyCheck 方法,除非您连接另一个事件以捕获按键然后将其传递给此方法,通过新建 new KeyPressEvent(...)

因此,为了回答您的问题,我认为您需要类似(伪代码)

public Form1()
{
    InitializeComponent();
    GameStart();

    // Wire up a handler for the KeyPress event
    this.KeyPress += KeyCheck;
}

private void KeyCheck(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        button1.PerformClick();
    }
}

订阅这个:

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.KeyPress_Method);

以及确认回车键的方法:

void KeyPress_Method(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)13) // enter key
    {
        // your code
    }
}