2013-08-19 4 views
-1

내 응용 프로그램이 부모, 자식 응용 프로그램입니다. 어린이 양식이 표시되면 cntrl + F4을 눌러 하위 양식을 닫습니다. 동작을 차단하는 방법과 동일한 시간에 cntrl + F 키를 누르면 하위 폼에 이벤트가 발생하는 버튼이 전송됩니다.Control + F4에서 동작 변경 VBA.net

어떻게 할 수 있습니까? 내가 코딩 이하로 사용하고

당신은 양식 closing 이벤트를 잡기가 키를 눌러 의해 이루어집니다 경우 다음 테스트해야하는 control + F4

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean 
     If keyData = Keys.Control Or Keys.F4 Then Return True 
     Return MyBase.ProcessCmdKey(msg, keyData) 
    End Function 

답변

1

이 이벤트가 이미 존재하면 FormClosing 이벤트가 발생합니다. 이벤트의 이벤트 핸들러에서 e.Cancel = True로 설정하여 닫기를 취소 할 수 있습니다. 그렇게하기 전에 e.CloseReason을 확인하십시오.

표준 Windows 바로 가기 키 누르기를 피하지 마십시오. 또한 사용자는 하위 창의 닫기 버튼을 클릭하여 창을 닫을 수 있습니다. Ctrl + F4는 마우스를 사용하지 않고 동일한 작업을 수행하는 데 유용한 바로 가기입니다.

0

을 차단합니다.

나는 ALT-F4를 의미한다고 생각 하나?

Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing 
      If My.Computer.Keyboard.AltKeyDown Then e.Cancel = True 
    End Sub 

또는 그보다 더 짧습니다.

e.Cancel=My.Computer.Keyboard.AltKeyDown 
+0

아니요, 그는 MDI 하위 창에 대한 표준 바로 가기 키 스트로크 인 Ctrl + F4를 의미합니다. –

+0

현재 키보드 상태를 사용하여 이벤트에 대한 결정을 내게합니다. 이것에 대한 하나의 논쟁으로, 사용자가 심각한 성능 문제를 겪고있는 컴퓨터에서 Ctrl + F4를 누르면 폼 닫는 이벤트 전에 메시지가 대기하여 "My.Computer.Keyboard.CtrlKeyDown"이 상태와 일치하지 않을 수도 있습니다. 사용자가 양식을 닫으려고 할 때 – Brian