1

WndProcこのユーザーコントロールを開発しているので、コントロールの親(すべての実用的な目的でWindowsフォーム)をオーバーライドする必要があり、困惑しています。

通常、ユーザーをフォームにドロップして、手動でフォームを上書きすることができますWndProc。私の開発チーム全体と、おそらく今は知らない他の人がそれを使用している可能性があるので、UserControlからオーバーライドする方が良いと思います。

誰かが私がこれを成し遂げることができる方法を知っていますか?私の好みの言語はVB.NETとC#です。

4

1 に答える 1

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 メッセージを傍受できます。

幸運を!

于 2010-08-21T22:09:16.363 に答える