我有一个应用程序,我希望能够移动滑块。但是,程序每30秒自动更新一次滑块。当我尝试使用鼠标更改滑块位置时,程序仍在更新滑块位置,因此我无法使用鼠标手动移动它。
不知何故,如果用户正在更改位置,我希望应用程序不更新滑块。如何在不使用left button down事件的情况下判断鼠标左键是否按下?我只想能够访问鼠标,并检查鼠标左键的按钮状态。如何在不处于鼠标事件的情况下访问它?
发布于 2015-02-10 00:59:44
bool mouseIsDown = System.Windows.Input.Mouse.LeftButton == MouseButtonState.Pressed;发布于 2013-04-18 23:11:16
好的,
我想通了。WPF中的滑块控件不会激发MouseDown、LeftMouseDown或LeftMouseUp事件。这是因为当用户操作滑块时,它会在内部使用它们来调整值。但是,WPF中的滑块控件确实会激发PreviewLeftMouseDown和PreviewLeftMouseUp事件。此外,当您单击鼠标左键时,滑块控件会自动捕获鼠标并保持不放,直到您释放鼠标左键为止。
我能够通过以下3个事件来解决我的问题:
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);
}
}发布于 2013-04-18 22:17:48
对于您的情况,您可以考虑使用Mouse Class。
如果我没记错的话,当鼠标离开应用程序的UI时,它不会跟踪按钮的状态,所以为了确保您始终有正确的信息,您可能需要捕获鼠标。
重复一遍,你需要自己检查这个。
https://stackoverflow.com/questions/16085373
复制相似问题