从子控件覆盖父级中的过程

时间:2010-08-10 12:01:54

标签: .net winforms user-controls override wndproc

我正在开发这个用户控件,它要求我覆盖控件父级的WndProc [对于所有实际用途都是Windows窗体]而且我很难过。

通常,我可以将用户放在表单上并手动覆盖表单WndProc。 由于我的整个开发团队以及我现在不知道的其他人可能正在使用它,我认为从UserControl中覆盖会更好。

有谁知道如何完成这项工作?我的首选语言是VB.NET和C#。

1 个答案:

答案 0 :(得分:3)

您可以尝试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消息。

祝你好运!