不确定我是否可以说得对,但我们走了。
我的应用程序有几个文本框和一个带滚动条的面板。我希望鼠标滚轮始终影响面板。有办法做到这一点吗?目前,当我将面板上的焦点更改为文本框时,滚轮将停止为面板工作。
提前致谢
答案 0 :(得分:0)
您可以使用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);