我目前正在开发一个 WinForms 项目,在表单上有几个文本框用于接受用户输入。根据用户输入的值,计算表单上其他字段的值。因此,我很困惑我应该使用两个事件处理程序中的哪一个来执行计算:textbox_Leave
或 textbox_TextChanged
?
由于 textbox_TextChanged
每次用户更改文本框中的一个字符时都会触发,我觉得它在处理器使用方面非常昂贵,不是吗?另一方面,textbox_Leave
仅在用户退出文本框后执行。但是,TextChanged
事件确实为用户提供了更好的响应体验。但是这种体验值得我们承受额外的处理损失吗?如果我使用 TextChanged
,我的项目能否在处理器较慢的旧系统上正常运行?
最佳答案
首先,我会说用简单的案例来测试它。如果您的计算不是太繁重,那么一开始可能就没有问题。
如果计算量非常大,而您仍然想要更人性化的解决方案,您可以使用计时器实现节流机制:在 TextChanged 事件中,启动一个带有 Tick 处理程序的计时器,该处理程序在特定时间后开始计算延迟;如果您在计时器开始之前收到另一个 TextChanged 事件,请重置计时器。当然,这将涉及一些同步,并可能在计时器事件和文本更改事件之间进行锁定。
关于c# - 重新计算其他表单值 : textbox_Leave OR textbox_TextChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525431/