これを正しく表現できるかどうかはわかりませんが、ここに行きます。
いくつかのテキスト ボックスとスクロール バー付きのパネルを持つアプリケーションがあります。マウスのスクロール ホイールが常にパネルに影響するようにします。これを行う方法はありますか?現在、パネルからテキスト ボックスにフォーカスを変更すると、パネルのスクロール ホイールが機能しなくなります。
前もって感謝します
これは PreFilterMessage で行うことができます。まず、次のように IMessageFilter を実装するようにフォームを変更します。
public partial class Form1 : Form, IMessageFilter
次に、コンストラクターでメッセージ フィルターを追加します。
public Form1()
{
InitializeComponent();
Application.AddMessageFilter(this);
}
次に、IMessageFilter インターフェイスを実装します。
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEWHEEL)
{
SendMessage(panel1.Handle, m.Msg, m.WParam, m.LParam);
return true;
}
return false;
}
また、次のものが必要になります。
private const int WM_MOUSEWHEEL = 0x020A;
[DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point pt);
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);