2011-12-24 32 views
0

我正在用C#编写一个Hangman程序,当我按下键盘按钮时,我希望点击表单上的按钮。我应该在哪里写这个?在form1.load()中?C#用于触发方法的键盘按钮

+0

如果您发现我们的答案没有回答您的问题,请编辑您的问题以获取更多信息,以便我们详细阐述一些问题。如果您已经有了答案,请通过标记为正确的答案告诉我们,谢谢。 – 2011-12-29 17:51:24

回答

2

如果您希望它发生在键盘事件中,您不会在Form.Load()中编写代码。当表单第一次加载(出现在屏幕上)时,发生该事件(并执行其中的代码)。

如何处理KeyPress event并在该方法中编写代码?你的表单也有这些事件之一。

示例代码:

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    Button1.PerformClick(); 
} 

PerformClick method将产生一个Click事件的Button control。您可以处理Click事件以类似的方式:

private void Button1_Click(object sender, EventArgs e) 
{ 
    // do something in response to the button being clicked 
    // ... 

    MessageBox.Show("Button clicked!"); 
} 

如果该事件处理的东西迷惑你,确保你在C#和/或.NET Framework等节目拾起一本好书你学得很好。这是非常重要的,不要跳过!

0
private void Form_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Left) 
    { 
    // Do your hang job 
    Button_Click(sender, EventArgs.Empty); 
    } 
} 
0

您需要订阅感兴趣的事件,然后处理它们。但在你需要阅读和研究如何做到这一点之前。这在C#中不是一个难题。订阅该事件

http://msdn.microsoft.com/en-us/library/ms171534.aspx

一次创建,您可以从点击按钮,并从的keydown调用一个函数。

1

你必须在表格上启用KeyPreview财产,那么你必须直接在表格上实现了KeyPress事件:

Form1.KeyPress +=new KeyPressEventHandler(Form1_KeyPress); 

private void Form1_KeyPress(object sender, KeyPressEventArgs e) { 
     if(e.KeyCode == someKey) { 
button1.performclick(); 
} 

} 
2

不,你应该选择要在其上该事件触发,然后进入属性窗格,选择事件标签并下降到KeyPress事件,双击它并添加一些代码。

Normaly这样的事情会做你想做的,只是谷歌keyCode值,以确定要控制按键,你可以添加更多的if语句:

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
     { 
      Button1.PerformClick(); 
     } 

    //Other if statements if you want to keep an eye out for other keyPresses 
} 

[编辑]我只记得你可能也要考虑快捷方式,在这种情况下,Button1.Text属性应该标记为&Button1,这样“B”会加下划线并接受alt+B快捷方式来执行按钮单击事件。 &符号在您想要的快捷方式的字母前面设置,请确保您不要对各种按钮使用相同的字母。

+1

不要忘记将窗体的属性KeyPreview设置为true。 看看这里: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview%28v=VS.100%29.aspx – 2011-12-24 12:04:10

+0

@GorgiRankovski我刚刚用' KeyPreview = false;'它工作。我明白你在说什么,这似乎是合乎逻辑的,但我没有理由为你,至于为什么它的作品,即使那个财产是虚假的。有任何想法吗? – 2011-12-24 12:24:32

+0

关于我以前的评论,我想了解一下我测试过的东西(空表单),并用一些控件测试了相同的东西。因此,如果我设置了'KeyPreview = false;'我将能够与控件进行交互而不触发KeyPress事件,因此您需要激活KeyPreview属性。但是当'KeyPreview = true;'它会在任何时候按下按键触发KeyPress事件,所以我会建议一些控制什么键被设置为触发操作(如果语句是sugegsted)或者键盘上的每个命中都会运行这些操作。这可能是有意的,但只是让你知道会发生什么。 – 2011-12-24 16:57:10