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