给按钮添加热键和快捷键

1>如果你只是想实现一个很简单的用户按下Esc或者Enter来简单控制当前窗体的行为,So easy .!
 窗体有两个属性只需简单设置就可以。
 比如你设置 Me.CancelButton = Me.btnExit而且你代码是这么写D 。
     Public Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
        Application.Exit()
      End Sub
那么当你按下Esc的时候就可以触发btnExit.Click事件,当然会调用上面的过程,自动退出程序。
同样道理如果你设置Me.AcceptButton = Me.btnExit,当你按下Enter的时候会执行上面的过程。
这里需要注意的是一个窗体的AcceptButton和CancelButton都只能设置一个,设置了AcceptButton只是表示用户按下Enter的时候触发对应的Button的Click事件,不是调用其对应的处理过程。
概念问题。):

2>如果你想实现热键,So easy too !^_^

只需给对应的Button.Text做文章就可以了。
大家一定记得MainMenu里设置热键的方法吧!
只需设置text=&MenuText即可,比如你设置mnuFile.Text="&File"你按下Alt+F的时候就可以访问file菜单。
这一招对button一样适用,往下我就不用说了吧!
再说下去你不说自己弱智那就是我弱智了。嘿嘿 !

3>通过快捷键访问窗体中的按钮,这个有点学问,也就一点。

注意了,进入正题。):

第一步首先设置窗体的KeyPreview =true
至于为什么,msdn如是说:
当此属性设置为 true 时,窗体将接收所有 KeyPress、KeyDown 和 KeyUp 事件。在窗体的事件处理程序处理完该击键后,然后将该击键分配给具有焦点的控件。例如,如果 KeyPreview 属性设置为 true,而且当前选定的控件是 TextBox,则在该窗体的事件处理方法处理击键后,TextBox 控件将接收按下的键。要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体 KeyPress 事件处理方法中的keyPressEventArgs.Handled 属性设置为 true。

不用俺解释了吧!
不过上面说的每一句话都值得斟酌。自己想吧!

第二步就是在窗体的Keyup处理过程中写东西了,当然keydown也是可以D。keypress就值得斟酌了。):
代码大体是这个样子的:
  Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        If e.KeyData = Keys.Control + Keys.End Then
            btnExit_Click(Nothing, EventArgs.Empty)
        Else if.....
         ........
        End If
  End Sub
如果你想在keyup里用RaiseEvent btnExit.Click(),呵呵你会看到一个错误。
提示你所raise的不是当前窗体的事件,别只看表面,试试Raise窗体的事件行不行吧!

posted @ 2005-11-10 09:55  zhanqiangz(闲云野鹤)  阅读(3625)  评论(4编辑  收藏  举报