如何在没有鼠标事件的情况下使用ToolStripMenuItems(单击或双击事件)?

时间:2010-04-04 06:14:31

标签: vb.net winforms visual-studio-2008 menu

我在使用ToolStripMenuItems的Vb.NET 2008 windows窗体中有一个解决方案,

但我需要实现菜单导航而无需任何鼠标干预。

我只在ToolStripMenuItems,MenuStrip等中找到了鼠标事件。

所有MenuStrip和ToolStripMenuItem都是以编程方式创建的,从数据库读取用户权限,然后添加处理程序来管理事件,但客户端不希望鼠标交互,他只想要键盘输入!。

添加菜单例程:

    Private Sub AddModulo(ByVal strNAME As String, ByVal strTITULO As String)

    Dim oToolStripMenuItem As New ToolStripMenuItem(strTITULO)

    oToolStripMenuItem.Name = strNAME
    oToolStripMenuItem.Text = "&" & strTITULO


    mnuPrincipal.Items.Add(oToolStripMenuItem)
    AddHandler oToolStripMenuItem.MouseMove, AddressOf LoadMenu


End Sub

添加项目例程:

    Private Sub AddItems(ByVal StrModulo As String, ByVal strItem As String)

    Dim mnuItem As New ToolStripMenuItem

    mnuItem.Name = StrModulo.ToUpper
    mnuItem.Size = New System.Drawing.Size(145, 22)

    If Microsoft.VisualBasic.Left(strItem, 1) = "-" Then

        mnuItem.Text = "                " & Microsoft.VisualBasic.Mid(strItem.ToUpper, 2)
        mnuItem.BackColor = Color.Blue
        mnuItem.ForeColor = Color.White

    Else
        mnuItem.Text = strItem
    End If

    mnuItem.Tag = UCase(Mid(StrModulo, 5, 2))

    AddHandler mnuItem.Click, AddressOf LoadMenuItem

    Dim newOption = mnuPrincipal.Items(mnuPrincipal.Items.Count - 1)
    newOption.DropDownItems.Add(mnuItem)

End Sub

THX。

2 个答案:

答案 0 :(得分:3)

这是非常基本的东西,所以如果这不是你需要的,只要忽略这个答案,但在我看来,这就是你所要问的。

无论如何,使用键盘可以轻松访问ToolStripMenuItem ...

如果您从工具箱中将MenuStrip插入表单,而不是使用MenuStrip Tasks中的“插入标准项目”选项来插入标准菜单项,则在启动winforms应用程序时,如果按Alt键,您会注意到来自每个顶级ToolStripMenuItem的字母带下划线。如果您按下该键与Alt键组合,则会提醒您该ToolStripMenuItem的子项可用。例如,如果按Alt + F,则会删除“文件”菜单。

以这种方式删除顶级菜单后,您可以再按一个键盘键来访问子项目。这是通过添加&设计器中ToolStripMenuItem的“Text”属性中任何字母前面的char。这允许您在使用Alt + Key组合删除顶级菜单后访问子项。例如,默认情况下,OpenToolStripMenuItem是文件菜单的子项,具有&字母O(& Open)前面的字符,因此您的用户可以通过按Alt + F + O而不是使用鼠标轻松访问此事件。

除此之外,您还可以使用ToolStripMenuItem的“ShortcutKeys”属性轻松地为每个ToolStripMenuItem指定快捷键。如果您在设计器中下拉所选的ToolStripMenuItem的'ShortcutKeys'属性,您将能够选择修改器(Ctrl,Shift,Alt)和您想要与该修改器结合使用的键盘键(通常为Ctrl + O)对于文件>打开)。使用相同的方法,您可以为您自己添加到菜单条的任何ToolStripMenuItem指定键盘快捷键...

希望这会有所帮助......

答案 1 :(得分:1)

按照建议使用快捷方式,但也要在基本菜单容器上将TabStop设置为True。它将允许键盘通过制表符和箭头键访问菜单。

您应该能够使用mousedown和click事件的组合来测试“Enter键”。添加一个布尔值,您可以在mousedown事件(点击前触发)中设置为true,以确定是否使用鼠标单击按钮。然后在Click事件中,在清除布尔值后检查boolean和exit子。如果没有设置mousedown布尔值,则按下回车键以触发事件。