我尝试过这个XAML:
<Slider Width="250" Height="25" Minimum="0" Maximum="1" MouseLeftButtonDown="slider_MouseLeftButtonDown" MouseLeftButtonUp="slider_MouseLeftButtonUp" />和这个C#:
private void slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
sliderMouseDown = true;
}
private void slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
sliderMouseDown = false;
}因为从不引发MouseLeftButtonDown和MouseLeftButtonUp事件,所以sliderMouseDown变量永远不会更改。当用户在滑块上按下鼠标左键,将布尔值设置为true,而鼠标打开时,布尔值设置为false时,我如何才能使此代码工作?
发布于 2008-10-02 05:43:40
滑块吞噬MouseDown事件(类似于按钮)。
您可以注册PreviewMouseDown和PreviewMouseUp事件,它们会在滑块有机会处理它们之前触发。
发布于 2008-10-03 21:09:30
另一种方法(根据您的场景可能更好)是在过程代码中注册一个事件处理程序,如下所示:
this.AddHandler
(
Slider.MouseLeftButtonDownEvent,
new MouseButtonEventHandler(slider_MouseLeftButtonDown),
true
);请注意真正的论点。不幸的是,像这样的事件处理程序只能在过程代码中完成,而不能从中完成。
换句话说,使用此方法,您可以为普通事件(冒泡)注册事件处理程序,而不是为隧道(因此发生在不同时间)的预览事件注册事件处理程序。
有关更多信息,请参阅WPF发布的第70页上的深入挖掘侧栏。
发布于 2015-01-15 08:24:53
尝试使用LostMouseCapture和GotMouseCapture。
private void sliderr_LostMouseCapture(object sender, MouseEventArgs e)
private void slider_GotMouseCapture(object sender, MouseEventArgs e)当用户开始拖动滑块时会触发GotMouseCapture,当用户释放滑块时会触发LostMouseCapture。
https://stackoverflow.com/questions/160995
复制相似问题