WPF的TextBox控件的MouseDown事件不响应的解决方法

  • A+
所属分类:.NET技术
摘要

最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理。
于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里。
调试发现,点击TextBox时,事件处理方法未执行。



一 问题的发现

最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理。
于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里。
调试发现,点击TextBox时,事件处理方法未执行。


二 问题的原因

通过查阅微软官方文档了解到问题原因。
WPF的TextBox控件的MouseDown事件不响应的解决方法
附上文档链接:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-3.5/ms750580(v=vs.90)
TextBox内置了处理MouseDown事件的方法,其内部的方法处理完后将事件标记为Handled。
因此,从TextBox中侦听MouseDown事件的自定义事件处理程序永远不会被调用。


三 如何解决

3.1 侦听PreviewMouseDown事件

WPF提供了相应的Preview事件。

3.2 使用AddHandler添加自定义的路由事件。

textBox.AddHandler(TextBox.MouseDownEvent, new MouseButtonEventHandler(textBox_MouseDown), true);