.NET 中如何捕获 WebBrowser 控件的击键事件(KeyPress/KeyDown/KeyUp)?
Posted by Admin L in .NET Programming on 28-03-2013. Tags: .NET 编程经验, VB .NET 编程经验, VB .NET 问答, VB .NET 技巧, C# 问答, C# 编程经验, C# 技巧, .NET 问答, .NET 技巧
作者:牧山道人
原文地址:https://www.seeksunslowly.com/dot-net-捕获-webbrowser-控件-击键事件-keypress-keydown-keyup
转载请注明出处,谢谢。
_____________________________________
有时,我们需要处理用户在设计模式的 WebBrowser 控件中的击键事件(比如用于判断 WebBrowser 内容是否发生变化),但遍寻所有 WebBrowser 支持的事件,没有发现 KeyPress/KeyDown/KeyUp 事件。
WebBrowser 其实就是一个 IE,其本身相当复杂且融于 Form 后存在许多不稳定不可控因素,要想从底层去截获击键事件并改写是相当复杂的,而且容易产生其他问题,使其更不可控。
通过阅读 MSDN 文档及测试,发现其实很简单,使用 PreviewKeyDown 事件即可,该事件并不是预览键按下事件(恰好设计模式的 WebBrowser 可以预览其实际效果,所以从字面上理解容易误导人),而是发生在 KeyDown 事件前的事件。
这也是本道(甚至不少开发人员)很少使用 PreviewKeyDown 事件才有此尴尬,因为 PreviewKeyDown 其实只是 System.Windows.Form.Control 类别的原生事件,只要使用过这个事件,其实一眼就能发现,不用大费周折。