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?
2
A
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.