【问题标题】:Make tabpage not process mousewheel events (C#)使标签页不处理鼠标滚轮事件(C#)
【发布时间】:2009-08-29 10:12:45
【问题描述】:

我制作了一个在 TabPages 中使用 PictureBoxes 的 MDI(选项卡式)应用程序。图片框有时比标签页大,因此会出现滚动条。它是使用 Windows 窗体用 C# 编写的。

在我的标签页中,我在 MouseWheel 事件中捕获和处理鼠标滚轮事件(我用它来旋转我在图片框中绘制的一些对象)。

但是当我有滚动条时,当我旋转鼠标滚轮时,我的对象会旋转,但标签页也会向下滚动。

如何使标签页不处理鼠标滚轮事件,从而使其不向下滚动?我希望它只有在用户单击并拖动滚动条时才能滚动。

【问题讨论】:

    标签: c# mousewheel tabpage


    【解决方案1】:

    子类TabPage 并覆盖WndProc() 方法以忽略WM_MOUSEWHEEL 消息:

    public class MyTabPage : TabPage
    {
      private const int WM_MOUSEWHEEL = 0x20a;
    
      protected override void WndProc(ref Message m)
      {
        // ignore WM_MOUSEWHEEL events
        if (m.Msg == WM_MOUSEWHEEL)
        {
          return;
        }
    
        base.WndProc(ref m);
      }
    }
    

    然后使用您的MyTabPage 子类代替标准TabPage

    【讨论】:

    • 有效!谢谢! PS:还有其他方法,不需要我创建另一个类吗?
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多