为什么TextBox使用 e.Handled = true 以防止输入特定字符。
我们不是有更好的方法吗?
这不是一个错误的设计吗?
目前我希望不接收 KeyDown 事件,如果特定的 TextBox 是一个很好的方法吗?或者我必须检查是 OriginalSource 我想要的TextBox ......
因为看起来我原来的问题有点令人困惑让我改革它
让我们假设我们有一个画布和文本框作为画布的孩子。
我注册了canvas的keyDown事件来做一些非常有趣的事情。
我不想在用户输入textBox时收到keydown事件。
有没有办法在不涉及e.OriginalSource的情况下做到这一点?
答案 0 :(得分:5)
如果您想阻止任何输入,您可以(事实上, )也设置ReadOnly = true
而不是收听KeyDown
事件
如果您想选择性地防止击键,那么聆听KeyDown
和设置e.Handled
是唯一的方法。
但是,选择性地阻止击键是坏的可用性;不要这样做。而是使用文本框控件的Validating
event来验证用户输入。