c# - 重新计算其他表单值 : textbox_Leave OR textbox_TextChanged?

标签 c# .net winforms textbox keyboard-events

我目前正在开发一个 WinForms 项目,在表单上有几个文本框用于接受用户输入。根据用户输入的值,计算表单上其他字段的值。因此,我很困惑我应该使用两个事件处理程序中的哪一个来执行计算:textbox_Leavetextbox_TextChanged

由于 textbox_TextChanged 每次用户更改文本框中的一个字符时都会触发,我觉得它在处理器使用方面非常昂贵,不是吗?另一方面,textbox_Leave 仅在用户退出文本框后执行。但是,TextChanged 事件确实为用户提供了更好的响应体验。但是这种体验值得我们承受额外的处理损失吗?如果我使用 TextChanged,我的项目能否在处理器较慢的旧系统上正常运行?

最佳答案

首先,我会说用简单的案例来测试它。如果您的计算不是太繁重,那么一开始可能就没有问题。

如果计算量非常大,而您仍然想要更人性化的解决方案,您可以使用计时器实现节流机制:在 TextChanged 事件中,启动一个带有 Tick 处理程序的计时器,该处理程序在特定时间后开始计算延迟;如果您在计时器开始之前收到另一个 TextChanged 事件,请重置计时器。当然,这将涉及一些同步,并可能在计时器事件和文本更改事件之间进行锁定。

关于c# - 重新计算其他表单值 : textbox_Leave OR textbox_TextChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525431/

相关文章:

c# - 从 GridView 添加 DataRow 时如何捕获 ConstraintException?

C# .Net 3.5 使用具有不同返回类型的重载索引器

c# - 从内存中播放 wav/mp3

winforms - 基于numericupdown在DataGridView中添加行

c# - 将数据网格绑定(bind)到集合

c# - 是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

c# - 删除循环中的控件

c# - 用字符串初始化自己的类型

c# - 如何在 C# 中将以下文本转换为正确的字符串?

C#无法匹配Html特殊字符