2011-09-23 36 views
0

是否可以在tabPage上的鼠标滚轮上添加修饰键(例如Ctrl)?添加修改键以滚动标签页

编辑:

因为我有需要使用鼠标滚轮的tabPage控制,我想修改键加鼠标滚轮滚动的tabPage。这样,用户就可以使用鼠标滚轮来操作控件,并且可以通过使用Ctrl +鼠标滚轮向下滚动或向上滚动。

+0

要做什么? –

+0

然后,您必须覆盖标签页上滚轮滚动的行为,并检查Ctrl是否被按下,然后更改行为。 – MrFox

+0

@Jeff我在我的'tabPage'上有控件,需要使用鼠标滚轮。 – Otiel

回答

2

做到这一点的唯一方法是从TabPage的继承和处理WM_MOUSEWHEEL事件:

public class MyTabPageHandlingCTRL : System.Windows.Forms.TabPage 
{ 
    const int WM_MOUSEWHEEL = 0x20A; 

    protected override void WndProc(ref System.Windows.Forms.Message m) 
    { 

     if (m.HWnd != this.Handle) 
      return; 
     if (m.Msg == WM_MOUSEWHEEL && 
      (Control.ModifierKeys & Keys.Control) != Keys.Control) 
     { 
      return; // don't propagate the event 
     } 
     base.WndProc(ref m); 
    } 
} 

当然在你TabControl.TabPages必须添加MyTabPageHandlingCTRL而不是简单TabPage

0

你打算检测鼠标滚动时,并按住ctrl,你想把它们视为标签更改?

为鼠标滚动和keydown,键盘事件创建3个事件处理。当ctrl关闭时,一个标志上的 。如果该标志打开,则鼠标滚动事件插入检测时该键关闭时取消标志 ,然后执行你的诀窍。

+0

不是选项卡更改,但选项卡滚动。 – Otiel

+0

那你有什么问题?你是否想弄清楚如何制定滚动技巧或检测键+鼠标事件? – Kelmen

+0

我想阻止'tabPage'在用户使用鼠标滚轮时滚动,因为我需要鼠标滚轮用于其他控件。 – Otiel