【发布时间】:2015-01-19 10:09:11
【问题描述】:
在这里使用文本编辑器...
我试图弄清楚在键盘事件发生后用户是否真的导致了文本框中的任何更改。显然,如果他们按下像 A B C 这样的标准键,它会触发,但如果有办法,我更感兴趣,此外枚举所有可能的非输入选项。
我会注意到我意识到文本框的状态可以在前后进行比较,但是如果它是一个大文档,这似乎会占用内存和 CPU 时间。另外,我将Modified 属性用于另一个目的,因为它只在它更改时触发,所以这也不是一个选项,因为它通常会处于true 状态。
我虽然谈到了枚举方面,但这似乎也效率低下,因为我不仅要确保每个非输入选项都在那里,还要检查所有异常。想到的一个例子:
如果 Ctrl 被按下,我不想做任何事情,除非我有 Ctrl + V 或 Ctrl + X.
但是,如果剪贴板中没有任何内容,那么 Ctrl + V 不应该做任何事情,如果没有选择任何内容,那么 Ctrl + X 不应该做任何事情。
我确信还有更多我现在没有想到的例外情况。
至于 Modified 属性,当它发生变化时,我会根据它的状态使用它来修改带有/不带有星号的寡妇标题。因此,如果我重置属性,它将删除星号。
【问题讨论】:
-
对内容进行哈希处理怎么样?
-
@SteveB 随意添加该方法。虽然我认为由于 .NET 已经触发了
TextChanged事件,但这是最快的方法,因为它添加了一个函数调用以及函数内部的任何代码。
标签: c# textbox textchanged