2010-08-19 3 views
2

VB.NET Winforms 응용 프로그램에서 DataGridview와 텍스트 상자가 모두 포함 된 양식이 있습니다. 내가있는 DataGridView에서 작동 + V Ctrl 키을 Ctrl 키 + X, Ctrl 키 + C의 바로 가기를 일부 메뉴 항목 항목을 가지고 있고, . 그러나 텍스트 상자의 기본 잘라내 기, 복사 및 붙여 넣기 바로 가기를 덮어 씁니다. 메뉴 바로 가기는 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 키 + C에 다른 기능을 할당하고, 하지 않을 Ctrl 키 + V 키.

관련 문제