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