繁体   English   中英

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

[英]C# WF prevent trackbar from getting mouse wheel event

我在C#中有一个WindowsForms UI。 我有一个面板和一个PictureBox。 我只是通过窗体获取Mouse Wheel事件,然后在面板中缩放PictureBox

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

问题是,当我使用轨迹栏时,轨迹栏会获取mouseWheel事件,而我无法再缩放图像。 我无法通过单击PictureBox或Panel来释放它。 现在我该怎么办?

尝试通过以下方式禁用轨迹栏的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;
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM