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

时间:2015-02-07 23:12:19

标签: c# winforms keypress

好的,所以我创建了一个名为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)
    {

    }
}

3 个答案:

答案 0 :(得分:0)

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

您需要与您的其他方法类似的内容,包含发件人对象和事件参数。

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

答案 1 :(得分:0)

这里需要注意的事情:

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

答案 2 :(得分:0)

订阅:

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

以及检查Enter键的方法:

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