在这里使用文本编辑器......
我试图弄清楚用户是否在键盘事件发生后实际上在文本框中引起了任何更改。显然,如果他们按下标准键,如 A B C ,它会触发,但如果有&#39我会更感兴趣除了列举所有可能的非输入选项外,还有其他方法。
我会注意到我意识到文本框的状态可以在之前和之后进行比较,但这似乎是对内存的不良使用,以及如果它是一个大文档的CPU时间。此外,我将Modified
属性用于其他目的,并且因为它仅在更改时触发,因此它也不是一个选项,因为它通常不会出现在{{true
属性中。 1}}状态。
我虽然关于枚举方面,但这似乎效率低下,因为我不仅要确保每个非输入选项都存在,还要检查所有异常。想到一个例子:
如果按 Ctrl ,我不想做任何事情,除非我有 Ctrl + V 或 Ctrl + X 。
但是,如果剪贴板中没有任何内容,则 Ctrl + V 不应执行任何操作,如果未选择任何内容,则< kbd> Ctrl + X 不应该做任何事情。
我确信还有更多例外情况,我现在没有想到。
对于Modified属性,当它改变时,我会使用它来根据它的状态修改带/不带星号的寡妇标题。因此,如果我重置属性,它将删除星号。
答案 0 :(得分:-1)
在着名的rubber duck debugging方法中,我最终只是通过询问来解决这个问题。如果我错过了更有效的选择,请告诉我。
第一个看起来最简单的选项就是使用TextChanged
事件,我通过在帖子中添加标签实际了解到这一点。
如果由于某种原因对未来的读者无效,那么使用ModifiedChanged
事件将是下一个最佳选择。
简单地说,在我的情况下,星号只在文档保存时消失。通过设置标志,我可以使用if
语句来确定是否需要将其删除,然后在该点重置标志。像这样:
void saved(){
// ...
saved = true;
}
// ...
if(saved){
removeAsterisk();
saved = false;
}
// ...
这些似乎是最好的选择,它们在代码中既不长,也不会通过检查100k字符来及时消耗。