У меня есть пользовательский элемент управления, который наследуется от базового пользовательского класса управления. В пользовательском элементе управления, который наследует это, я помещаю ряд текстовых полей. Во время выполнения я должен знать, когда каждый элемент управления получает фокус и теряет фокус. Для этого я перепробовал WndProc в базовом классе и пытаюсь захватить там сообщения. Проблема, с которой я сталкиваюсь, заключается в том, что я никогда не получаю WM_SETFOCUS или WM_KILLFOCUS в цикле сообщений.Trapping WM_SETFOCUS в WindProc VB.NET
Это WndProc:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case WM_SETFOCUS
Debug.WriteLine(m.ToString())
Case WM_KILLFOCUS
Debug.WriteLine(m.ToString())
Case Else
Debug.Print("OTHER: " + m.ToString())
End Select
MyBase.WndProc(m)
End Sub
Я получаю целую кучу сообщений для получения текста и некоторые другие вещи, так что я знаю, что я получаю там. Он просто никогда не останавливается на WM_SETFOCUS или WM_KILLFOCUS.
Что я делаю неправильно.
как использует стандартный Enter и Leave события не хватает? – Plutonix
Я пытаюсь найти общий способ сделать это. У меня есть много элементов управления текстовыми полями на одном из этих элементов управления пользователя. Мне нужно сосредоточиться на каждом из текстовых полей. –
Я полагаю, что я мог бы добавить некоторый контроль над загрузкой моего базового класса и добавить обработчики событий для каждого из текстовых полей. Это даст мне необходимую мне функциональность. –