0

我想用代码打开 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”?

4

1 回答 1

1

你的第二个问题有一个简单的答案:

ExitToolStripMenuItem.Select()

StripMenu 中的每个项目都有自己的“独立”对象,您可以直接访问这些对象。

你的第一个问题可能会变得有点棘手。这Alt Key是一个修饰符,预计与其他键结合使用,为什么不按预期使用呢?通过依赖事件(没有钩子或类似的东西),您必须设置一个全局(布尔)变量并组合KeyDownKeyUp事件(并将所有代码放在 KeyUp 事件中);但这并不简单:每次按下 Alt 时都会存储此信息(因为如前所述,预计会以这种方式使用:与其他键组合按下),因此可能会变得有点难以确定是否其他键是否与 Alt 结合使用取决于顺序(如果 Alt 在其他键之前被按下)。我建议您避免所有这些麻烦,只依靠 Alt + 其他键。

于 2013-08-22T10:23:18.590 回答