4

尝试使用Slider控件时,我想听MouseLeftButtonDownand MouseLeftButtonUp。我为这两个事件设置了处理程序。MouseLeftButtonUp作品符合预期。MouseLeftButtonDown根本没有提出来。

任何想法为什么?

我做了一些谷歌搜索,似乎 WPF 也没有触发。解决方案之一(在这篇文章中)是使用 Silverlight 不支持的事件的预览版。

有没有我没有看到的简单解决方案?

谢谢J

4

1 回答 1

12

这是因为 Slider 处理鼠标向下/向上事件。在内部,它实现为两个重复按钮和中间的拇指。当您单击滑块的左侧或右侧时,您的鼠标事件由重复按钮处理,您不会得到它们。

如果您仍想处理已处理的事件,您可以使用AddHandler()方法。这是 Silverlight 示例:

XAML

<Slider Width="100"
        VerticalAlignment="Top"
        Minimum="0"
        Maximum="100"
        Name="sl" />

C#

public partial class MainPage : UserControl
{
  public MainPage()
  {
    InitializeComponent();

    sl.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonDown), true);
    sl.AddHandler(MouseLeftButtonUpEvent, new MouseButtonEventHandler(Slider_MouseLeftButtonUp), true);
  }

  private void Slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  {
  }

  private void Slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  {
  }
}

在 WPF 中情况几乎相同(名称略有不同)。

于 2009-09-24T16:22:33.173 回答