C#WF防止轨迹栏获取鼠标滚轮事件

C#WF防止轨迹栏获取鼠标滚轮事件,c#,windows-forms-designer,mousewheel,C#,Windows Forms Designer,Mousewheel,我有一个C#的WindowsForms用户界面。我有一个面板和一个图片盒。 我只需按窗体获取鼠标滚轮事件,然后在面板中缩放PictureBox public MainWindow() { InitializeComponent(); this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.zoom_handler);// Capture Mouse wheel event

我有一个C#的WindowsForms用户界面。我有一个面板和一个图片盒。 我只需按窗体获取鼠标滚轮事件,然后在面板中缩放PictureBox

    public MainWindow()
    {
        InitializeComponent();
        this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.zoom_handler);// Capture Mouse wheel event
    }

问题是,当我使用轨迹栏时,轨迹栏会收到鼠标滚轮事件,我无法再缩放图像。我无法通过单击PictureBox或面板来释放它。现在我该怎么办

尝试通过以下方式禁用轨迹栏的鼠标滚轮:

trackBar1.MouseWheel += new MouseEventHandler(Disable_MouseWheel);



private void Disable_MouseWheel(object sender, EventArgs e)
{
    HandledMouseEventArgs ee = (HandledMouseEventArgs)e;
    ee.Handled = true;
}

最后我找到了答案

    public MainWindow()
    {
        InitializeComponent();

        this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.zoom_handler);// Capture Mouse wheel event
        mytrackbar.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.zoom_handler);// Capture Mouse wheel event
        mytrackbar.MouseWheel += (sender, e) => ((HandledMouseEventArgs)e).Handled = true;
    }

若你们想用鼠标滚轮禁用轨迹条滚动,最后一行就足够了。但使用该行可以禁用mousewheel事件,直到您关注具有mousewheel事件的其他控件。如果您在某些控件(或可能是窗体)上使用鼠标滚轮事件,而这些控件不能简单地获得焦点,则必须调用轨迹栏鼠标滚轮事件上的函数。

谢谢您的回答,但不幸的是,它不起作用。还有其他方法可以禁用它,比如,但它禁用鼠标滚轮事件,而不是将其交给表单。ee.Handled应为true还是false?@Snympi true,如果为false,默认鼠标滚轮处理程序将正常工作,必须检查MSDN文档以确保。命名有点违反直觉。@Snympi,这与直觉并不矛盾,如果是真的,这意味着事件已经被处理,不需要使用默认处理程序进行处理。