首页 文章

制表标签不处理鼠标滚轮事件(C#)

提问于
浏览
0

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

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

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

如何使tabpage不处理mousewheel事件,从而使其不向下滚动?如果用户点击并拖动滚动条,我希望它只能滚动 .

1 回答

  • 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 .

相关问题