VB.NET Winforms菜单项快捷方式覆盖默认快捷方式?

时间:2010-08-19 19:55:22

标签: vb.net winforms datagridview keyboard-shortcuts

在VB.NET Winforms应用程序中,我有一个包含datagridview和文本框的表单。我有一些菜单项条目有 Ctrl + X Ctrl + C 的快捷方式在datagridview上运行的Ctrl + V 。但是,这些会覆盖文本框的默认剪切,复制和粘贴快捷方式。如何才能使菜单快捷方式仅在datagridview具有焦点时应用?

2 个答案:

答案 0 :(得分:2)

DataGridView.GotFocus事件中,指定快捷方式,然后在LostFocus事件中重新删除它们。

这样的事情:

Private Sub DataGridView_GotFocus(sender as Object, e as EventArgs) Handles DataGridView.GotFocus
  menuItem1.Shortcut = Shortcut.CtrlV
End sub

Private Sub DataGridView_LostFocus(sender as Object, e as EventArgs) Handles DataGridView.LostFocus
  menuItem1.Shortcut = Shortcut.None
End sub

一般情况下,我不会将其他功能分配给 Ctrl + X Ctrl + C ,和 Ctrl + V 键。

答案 1 :(得分:2)

正确的UI设计需要在菜单项不起作用时禁用它。副作用是它将不再窃取按键,只是你想要的。 Application.Idle事件非常方便。

Public Class Form1
    Public Sub New()
        InitializeComponent()
        AddHandler Application.Idle, Application_Idle
    End Sub
    Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)
        CopyToolStripMenuItem.Enabled = DataGridView1.Focus
        '' etc...
    End Sub
End Class