Переопределение процедуры в родительском элементе из дочернего элемента управления - PullRequest
1 голос
/ 10 августа 2010

Я разрабатываю этот usercontrol, который требует переопределить WndProc родительского элемента управления [который для всех практических целей является формой Windows], и я в тупике.

Обычно я мог бы опустить пользователя на форму и вручную переопределить формы WndProc. Поскольку вся моя команда разработчиков и, возможно, другие, о которых я сейчас не знаю, могли бы использовать его, я думаю, что было бы лучше переопределить из UserControl.

Кто-нибудь знает, как мне это сделать? Я предпочитаю языки VB.NET и C #.

1 Ответ

3 голосов
/ 22 августа 2010

Вы можете попробовать NativeWindow , получив ссылку на родительскую форму через this.FindForm().

То есть

public class MyListener : NativeWindow
{
     public MyListener(UserControl myControl)
     {
         this.AssignHandle(myControl.FindForm().Handle);
     }

     protected override void WndProc(ref Message m)
     {
          // do stuff
          base.WndProc(ref m);
     }

     // dispose, etc.
}

Таким образом, наследование от NativeWindow позволит вам перехватывать сообщения Windows.

Удачи!

...