2010-08-19 123 views
2

在VB.NET Winforms應用程序中,我有一個包含datagridview和textbox的表單。我有一個有按Ctrl +X按Ctrl +ç快捷一些菜單項條目,按Ctrl +V,關於datagridview的操作。但是,這些將覆蓋文本框的默認剪切,複製和粘貼快捷方式。如何才能使菜單快捷方式僅在datagridview具有焦點時適用?VB.NET Winforms菜單項快捷方式覆蓋默認快捷方式?

回答

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 
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 + Ç,並按Ctrl + V鍵。