2013-08-19 5 views
-1

Мое приложение является родительским, дочерним приложением. Затем отобразятся детские формы, а затем нажмите cntrl + F4. Форма ребенка закрыта. Как заблокировать действие и одно и то же время, если я нажму cntrl + F 4, дочерняя форма отправит кнопку, вызывающую это событие.Изменить действие в Control + F4 Vb.net

Как я могу это сделать?

Я использую ниже кодирования является блокировать 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

Нет, он означает Ctrl + F4, стандартную комбинацию клавиш для дочерних окон MDI. –

+0

Мне нужно использовать текущее состояние клавиатуры, чтобы принимать решения о событии. Как один из аргументов против этого, я подозреваю, что если пользователь нажимает Ctrl + F4 на машине, испытывающей серьезные проблемы с производительностью, сообщение может оказаться в очереди перед событием закрытия формы, в результате чего «My.Computer.Keyboard.CtrlKeyDown» не будет соответствовать состоянию в то время, когда пользователь пытался закрыть форму. – Brian