【问题标题】:Can the mouse scroll wheel always affect a panel?鼠标滚轮可以总是影响面板吗?
【发布时间】:2012-07-02 09:49:55
【问题描述】:

不确定我是否可以正确地说出来,但我们开始吧。

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

提前致谢

【问题讨论】:

标签: c# winforms


【解决方案1】:

您可以使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多