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

时间:2009-08-29 10:12:46

标签: c# mousewheel tabpage

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

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

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

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

1 个答案:

答案 0 :(得分: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