我正在开发这个用户控件,它要求我覆盖控件父级的WndProc
[对于所有实际用途都是Windows窗体]而且我很难过。
通常,我可以将用户放在表单上并手动覆盖表单WndProc
。
由于我的整个开发团队以及我现在不知道的其他人可能正在使用它,我认为从UserControl中覆盖会更好。
有谁知道如何完成这项工作?我的首选语言是VB.NET和C#。
答案 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消息。