首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF中,如何在不使用任何事件的情况下判断鼠标左键当前是否按下?

在WPF中,如何在不使用任何事件的情况下判断鼠标左键当前是否按下?
EN

Stack Overflow用户
提问于 2013-04-18 22:12:49
回答 6查看 20.7K关注 0票数 13

我有一个应用程序,我希望能够移动滑块。但是,程序每30秒自动更新一次滑块。当我尝试使用鼠标更改滑块位置时,程序仍在更新滑块位置,因此我无法使用鼠标手动移动它。

不知何故,如果用户正在更改位置,我希望应用程序不更新滑块。如何在不使用left button down事件的情况下判断鼠标左键是否按下?我只想能够访问鼠标,并检查鼠标左键的按钮状态。如何在不处于鼠标事件的情况下访问它?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-02-10 00:59:44

代码语言:javascript
复制
bool mouseIsDown = System.Windows.Input.Mouse.LeftButton == MouseButtonState.Pressed;
票数 41
EN

Stack Overflow用户

发布于 2013-04-18 23:11:16

好的,

我想通了。WPF中的滑块控件不会激发MouseDown、LeftMouseDown或LeftMouseUp事件。这是因为当用户操作滑块时,它会在内部使用它们来调整值。但是,WPF中的滑块控件确实会激发PreviewLeftMouseDown和PreviewLeftMouseUp事件。此外,当您单击鼠标左键时,滑块控件会自动捕获鼠标并保持不放,直到您释放鼠标左键为止。

我能够通过以下3个事件来解决我的问题:

代码语言:javascript
复制
   private void _sliderVideoPosition_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        _adjustingVideoPositionSlider = true;
        _mediaElement.Pause();
    }

    private void _sliderVideoPosition_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        _adjustingVideoPositionSlider = false;
        _mediaElement.Play();
    }

    private void _sliderVideoPosition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (_adjustingVideoPositionSlider)
        {
            _mediaElement.Position = TimeSpan.FromMilliseconds((int)e.NewValue);
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2013-04-18 22:17:48

对于您的情况,您可以考虑使用Mouse Class

如果我没记错的话,当鼠标离开应用程序的UI时,它不会跟踪按钮的状态,所以为了确保您始终有正确的信息,您可能需要捕获鼠标。

重复一遍,你需要自己检查这个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16085373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档