【发布时间】:2011-04-21 08:51:16
【问题描述】:
为什么 TextBox 使用 e.Handled = true 来防止输入特定字符。
难道我们没有更好的方法吗?
这不是错误的设计吗?
目前我不想收到 KeyDown 事件,如果特定的 TextBox 是焦点,有没有好的方法可以做到这一点?或者我必须检查 OriginalSource 我想要的 TextBox...
编辑:
看来我原来的问题有点混乱,让我改一下。
假设我们有一个 Canvas 和文本框作为 canvas 的子级。
我注册了画布的 keyDown 事件,在那里做一些非常有趣的事情。
我不想在用户输入 textBox 时收到 keydown 事件。
有没有办法在不涉及 e.OriginalSource 的情况下做到这一点?
【问题讨论】:
-
您的问题是什么?不要对特定文本框使用 keydown
-
e.Handled = true 是最好的方法。
-
假设您有 Canvas 和 TextBox 作为它的子项。我正在注册 Canvas 的 KeyDown 以做某事,但如果我输入 TextBox,我不想收到此 KeyDown。自然地将 e.Handled 设置为 true 将防止事件冒泡,但在 TextBox 情况下,我们将有不正确的行为。
-
最后是 WPF 中事件冒泡的一个缺点,最初每个人似乎都对此感到头晕目眩。好像你给我制造了一个无法解决的问题。您已经知道解决方案,只是不想使用它,因为它看起来“不优雅”。
-
终于有人了解我了。我做了一些研究,但我无法做到这一点。我认为文本框可能会在内部调用框架元素的 Addhandler,但事实并非如此。
标签: c# silverlight