2010-12-14 74 views
2

我知道这可能是一个简单的答案,你们中的一些,但我不知道如何正确地做到这一点。我创建了一个文本编辑器,它也有一个显示功能的对接窗口。我已经在菜单中设置了F8是显示功能窗口的快捷键。我也想搭上F8按键事件来解析在程序中的功能的当前数据,但我不能让这样的事情发生..重写按键

+0

什么奇怪的是,我可以按任何F键,并没有任何反应,但如果我按常规键,然后停止。 – mookie 2010-12-14 16:52:20

+0

看到我的回答编辑 – msarchet 2010-12-14 16:55:14

回答

3

捕捉你的文本编辑器keyPressed事件,并检查KeyEventArgs被进来的,然后标记为假的没有处理,这将导致事件传递到父控制:

KeyPressed(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F8) DoSomething(); 
    e.Handled = false; 
} 

回应你添加到你的问题的评论。您可能需要将控件KeyPreview设置为True。我认为KeyPreview可能仅在表单级别提供,但我不确定。

+0

我认为你有它倒退。将'e.Handled'属性设置为true将防止事件在控件树上传播,同时将'e.Handled'设置为false将允许其他控件捕获它。 – 2010-12-14 16:57:41

+0

@Mike Webb ahhh在我的探索错字,谢谢 – msarchet 2010-12-14 16:58:36

+0

哦,等等。对不起,我以为你说的是​​相反的。混乱。可能想重新给你的答案一点点。 – 2010-12-14 16:59:08

1

设置一个事件处理程序OnKeyPress(或OnKeyDownOnKeyUp)事件,并检查哪个键被按下(它将在事件参数中)。然后,你可以做任何你想做的事情。

1

我不认为标签的答案是正确的。 KeyPress事件处理程序不会处理功能键;您需要使用KeyUp事件处理程序或ProcessDialogKey方法。