WPF TextBox DoubleClick事件快速使用滚动条时触发

时间:2009-08-10 16:08:57

标签: .net wpf textbox scroll event-handling

我有一个WPF TextBox,定义如下:

<TextBox Text="{Binding Path=/Comments}" 
    Margin="351,193.91,10,36" 
    x:Name="txtComments" 
    IsReadOnly="True" 
    VerticalScrollBarVisibility="Auto" 
    LostFocus="txtComments_LostFocus" 
    MouseDoubleClick="txtComments_MouseDoubleClick" 
    AcceptsReturn="True" />

这完全符合我的意愿;但是,当VerticalScrollBars可见时,如果您快速单击ScrollBar,则会触发txtComments_MouseDoubleClick事件。有没有办法可以通过单击ScrollBar而不是文本框的主体来更改此行为或检测到事件被触发?

我想要这样做的主要原因是,如果你试图通过双击滚动条向下滚动事件被触发,这会导致应用程序沿着那条路走下去,如果那不是用户,这非常烦人预期的行动。

1 个答案:

答案 0 :(得分:12)

在双击处理程序中,检查 MouseButtonEventArgs 上的 OriginalSource 属性。该源将告诉您它是实际滚动条(重复按钮)还是文本框。类似的东西:

if (e.OriginalSource is TextBox)
{ 
    // Do your stuff.
}
else
{
    // From the scroll-bar.
}