对于每个控件,都有很多事件。其中两个非常相似,即“文本更新”和“文本更改”。它们之间有什么区别呢?
对于每个控件,都有很多事件。其中两个非常相似,即“文本更新”和“文本更改”。它们之间有什么区别呢?
以下是我对此事的看法,引用了MSDN的来源。我在示例中使用了TextBox和ComboBox,但我相当确定逻辑是普遍适用的。
TextUpdate事件:
在控件格式化文本但在文本显示之前发生。使用TextUpdate事件,在文本实际显示之前验证文本。
例如,如果ComboBox正在从某个数据源填充,且数据发生更改,则可以触发TextUpdate事件以进行验证(或其他任何操作)。
http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.textupdate(v=vs.110).aspx
TextChanged事件:
在文本框中的内容更改时发生。用户输入或将Text属性设置为新值会引发TextChanged事件。
我认为该引述涵盖了示例用法。
http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.textchanged(v=vs.95).aspx
我刚刚在使用comboBox时进行了一些尝试...
我发现,当文本发生变化时,例如用户输入或SelectedIndex更改时,TextChanged事件会触发。
只有当用户更新文本时,TextUpdated事件才会触发。
我的程序中,我使用Items.Add("x")来填充并使用SelectedIndex选择行。当用户选择不同的项目时,TextUpdated不会被触发。在TextUpdated中,我编写了代码以保存用户正在输入/更改的更新文本。但是,您需要从SelectionChangedCommitted获取SelectedIndex并将其保存到变量中,因为TextUpdated中的SelectedIndex似乎仅返回-1。