C# WF 阻止 trackbar 获取鼠标滚轮事件

C# WF prevent trackbar from getting mouse wheel event

我在 C# 中有一个 WindowsForms UI。我有一个面板和一个图片框。 我只是通过表单获取鼠标滚轮事件,然后在面板中缩放 PictureBox

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

问题是,当我使用 Trackbar 时,Trackbar 获取 mouseWheel 事件,我无法再缩放图像。我无法通过单击 PictureBox 或 Panel 来释放它。现在我必须做什么?

试试这样禁用trackbar的mouseWheel:

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;
    }

如果您想使用鼠标滚轮禁用轨迹栏滚动,最后一行就足够了。但是在该行中,您将禁用鼠标滚轮事件,直到您专注于具有鼠标滚轮事件的其他控件。如果您在某些无法简单获得焦点的控件(或可能是表单)上使用鼠标滚轮事件,则必须在轨迹栏鼠标滚轮事件上调用您的函数。