c# - 测试文本框文本是否已完成文本更改时使用的最佳方法/事件是什么

标签 c# winforms textbox events

使用 winforms、c#、vs 2008

所以我在 winforms 上有 textbox1、textbox2 和 textbox3。

Textbox3.text = textbox1.text + textbox2.text。

每当手动或编程更改 textbox1 和 textbox2 的内容时,我需要更新 textbox3。

问题是,如果我使用文本框 textchanged 事件,它会一直作为文本框中的一种类型触发。我需要一种方法来调用我的方法以在 tb1 或 tb2 以编程方式或通过键输入完成更改后填充 textbox3,而不是每次输入文本字母时都触发。

只有当 tb1 或 tb2 已完成更改时,我如何才能让 TextBox3 更新?

最佳答案

这在一定程度上取决于您所说的完成是什么意思。

最常见的选择是在焦点离开控件时运行一个事件。那是 Control.Leave事件或 Control.LostFocus .这些也是用于验证的事件 - 新值的验证(ValidatedValidating 事件)在焦点更改时发生。

如果您正在尝试进行渐进式搜索之类的操作,您需要在控件仍处于焦点状态时做出响应,而不是响应 键按下,那么另一种解决方案是使用计时器组件,并在每次触发 TextChanged 事件时重新启动计时器。这样,您的更新代码只会在用户更改文本并且没有输入任何其他内容(例如 1 秒)后运行。

关于c# - 测试文本框文本是否已完成文本更改时使用的最佳方法/事件是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444981/

相关文章:

c# - 使用 NodaTime 从字符串创建时间偏移

winforms - winforms 事件处理程序是否与调用者发生在同一线程上?

c# - 编辑 WinForms RichTextBoxControl C#

c# - 对文本框对象列表进行排序

javascript - 自动显示弹出窗口 - javascript?

c# - 从文件名可变的文件中提取日期

c# - 如何从 S3 获取 GetObjectResponse 的字节?

c# - 获取控件相对于整个屏幕的位置?

c# - SomePanel.Controls 中的 foreach Control ctrl 未获取所有控件

c# - 如何通过 ASP.NET 重定向和修改无扩展名的 URL?