2010-08-19 4 views
2

Dans une application Winforms VB.NET, j'ai un formulaire qui contient à la fois un datagridview et une zone de texte. J'ai quelques entrées élément de menu qui ont des raccourcis de Ctrl +X, Ctrl +C et Ctrl +V qui opèrent sur le datagridview. Cependant, ceux-ci remplacent les raccourcis par défaut couper, copier et coller pour la zone de texte. Comment puis-je faire en sorte que les raccourcis de menu ne s'appliquent que lorsque la vue de données a le focus?VB.NET Winforms raccourcis d'éléments de menu remplaçant les raccourcis par défaut?

Répondre

2

Une conception d'interface utilisateur correcte nécessite la désactivation de l'élément de menu lorsqu'il n'est pas fonctionnel. Un effet secondaire est qu'il ne volera plus la frappe, juste ce que vous voulez. L'événement Application.Idle est pratique pour cela.

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

Dans l'événement DataGridView.GotFocus, affectez les raccourcis et dans l'événement LostFocus, supprimez-les à nouveau.

donc quelque chose comme ceci:

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 

En général, cependant, je ne voudrais pas attribuer d'autres fonctions à la Ctrl + X, Ctrl + C et Ctrl + V touches.