Ну если у всех работает, а у тебя не работает, значит есть что-то в твоем коде, работающее не так, как тебе хочется. KeyPreviw работает без каких-либо хитростей.hement писал(а):У меня весь код в .NET. Попробовал KeyPreview, оно тоже не работает.
Интересно, это баг и тут есть какая-то хитрость?
Система - XP SP3, VB 2008.
Смысл KeyPreview как раз и заключается в том, что события нажатия клавиш вначале срабатывают для формы, а потом уже для конкретного элемента управления. Если нет элементов на форме, то теряется смысл KeyPreview. Вот пример простейшего кода. На форме два текстбокса A и B, для формы KeyPreview установлен в True.hement писал(а):Кажется нашел причину - все работает когда на форме нет элементов или она отключена. А когда она включена, то фокус с элементов формы уже никогда сам не передается форме. Надо что-то мудрить...
Private Sub FMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Debug.Print("FMain_KeyDown")
End Sub
Private Sub FMain_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
Debug.Print("FMain_KeyPress")
End Sub
Private Sub FMain_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
Debug.Print("FMain_KeyUp")
End Sub
Private Sub txtA_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtA.KeyDown
Debug.Print("txtA_KeyDown")
End Sub
Private Sub txtA_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtA.KeyPress
Debug.Print("txtA_KeyPress")
End Sub
Private Sub txtA_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtA.KeyUp
Debug.Print("txtA_KeyUp")
End Sub
Private Sub txtB_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtB.KeyDown
Debug.Print("txtB_KeyDown")
End Sub
Private Sub txtB_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtB.KeyPress
Debug.Print("txtB_KeyPress")
End Sub
Private Sub txtB_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtB.KeyUp
Debug.Print("txtB_KeyUp")
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95