WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法


一 问题的发现

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


二 问题的原因

通过查阅微软官方文档了解到问题原因。

附上文档链接: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);

posted @ 2022-03-15 18:37  一团静火  阅读(1432)  评论(0编辑  收藏  举报