我想用代码打开ContextMenuStrip并自动设置(推荐)项目 我有两个问题:
Private Sub myfrm_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then Me.Close()
If e.Alt Then
e.Handled = True
Dim pLoc As Point = New Point(Me.Location.X + myDGV.Location.X + 100, _
Me.Location.Y + myDGV.Location.Y + 100)
myContext.Show(pLoc)
End If
End Sub
1)如何检测是否仅按下了alt键而没有其他键? 2)如何在弹出此上下文菜单后自动选择(不运行,仅选择)项“ExitToolStripMenuItem”?
答案 0 :(得分:1)
你的第二个问题有一个简单的答案:
ExitToolStripMenuItem.Select()
StripMenu中的每个项目都有自己的“独立”对象,您可以直接访问它。
你的第一个问题可能会变得有点棘手。 Alt Key
是修饰符,预计会与其他键组合使用,为什么不按预期使用?通过依赖事件(没有钩子或类似的东西),你必须设置一个全局(布尔)变量并组合KeyDown
和KeyUp
事件(并将所有代码放在KeyUp事件中) );但它并不简单:每次按Alt键都会存储此信息(因为,如上所述,预计会以这种方式使用:与其他键组合使用),因此确定是否有点难以确定其他键是否与Alt结合使用,具体取决于顺序(如果按下Alt之前是否按下其他键)。我建议你避免所有这些麻烦,只需依靠Alt +其他密钥。