Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 鼠标滚轮能否始终影响面板?_C#_Winforms - Fatal编程技术网

C# 鼠标滚轮能否始终影响面板?

C# 鼠标滚轮能否始终影响面板?,c#,winforms,C#,Winforms,不确定我是否能说对,但我们开始吧 我有我的应用程序,它有两个文本框和一个带有滚动条的面板。我希望鼠标滚轮始终影响面板。有没有办法做到这一点?当前,当我将焦点从面板更改为文本框时,滚轮停止对面板工作 提前感谢您可以通过预过滤消息来完成此操作。首先,更改表单以实现IMessageFilter,如下所示: public partial class Form1 : Form, IMessageFilter 然后在构造函数中添加消息过滤器: public Form1() { InitializeCo

不确定我是否能说对,但我们开始吧

我有我的应用程序,它有两个文本框和一个带有滚动条的面板。我希望鼠标滚轮始终影响面板。有没有办法做到这一点?当前,当我将焦点从面板更改为文本框时,滚轮停止对面板工作


提前感谢

您可以通过预过滤消息来完成此操作。首先,更改表单以实现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);

面板是一个容器,它没有任何聚焦功能(默认情况下),您可能希望查看;