【发布时间】:2011-01-01 21:25:21
【问题描述】:
我遇到了一个非常奇怪的问题。我注意到偶尔在我的 TextBox 中输入时,我会丢失一些击键。我在这个 TextBox 挂钩的事件中添加了一堆跟踪语句,我发现当我丢失击键时,KeyUp、KeyDown 和 KeyPress 事件都正确触发,但 TextChanged 事件从未触发。
有人知道为什么会发生这种情况吗?我可以把它写成一个“.NET bug”,但我宁愿弄清楚这里是否有解决方案。
如果有人建议我使用 KeyUp/KeyDown 事件来确定文本是否已更改,那么这里也存在问题。每次按键都会多次调用 KeyUp/KeyDown,因此很难确定是否有人多次键入同一个字母。
【问题讨论】:
-
你用什么按键来体验这个? Textchanged 是文本框名为 Text 的属性的一部分,任何输入(字母和数字以及 $ 等符号)都会触发 TextChanged 事件,箭头键、插入、覆盖不会触发,但会被 KeyUp/KeyDown 事件捕获.
-
一个明显的例子是当文本框为空时按退格键。没有 TextChange 事件,但所有的键盘事件。
-
发生这种情况时,我肯定使用的是普通的字母数字键击。
-
我更改了您的标题,因为这与 C# 无关,只是您碰巧使用它来编写 .NET 代码。
-
同样的事情发生在我身上,特别是当我在 TextBox 中按下退格键时(它从一个字符变为空白,这又是文本值的变化)。当我按下 Delete 并选择 TextBox 的所有文本时,它也不会触发。