对于每个控件都有很多事件,其中两个非常相似,例如Text Update和Text Changed,区别在哪里?
以下是我对MSDN的看法。我在示例中使用了TextBox和ComboBox,但我确信逻辑是通用的。
文本更新:
在控件格式化文本时,但在显示文本之前发生。在实际显示文本之前,使用TextUpdate事件验证文本。
一个例子是,如果从某个数据源填充组合框,并且数据发生了更改。这可能会触发TextUpdate事件以允许进行验证(或其他任何操作)。
http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.textupdate(v=vs.110).aspx
文本更改:
当文本框中的内容发生更改时发生。用户输入或将Text属性设置为新值会引发TextChanged事件。
我认为这句话涵盖了示例用法。
http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.textchanged(v=vs.95).aspx
我刚刚用comboBox玩过这个。。。
我发现TextChanged事件在文本更改时触发,例如用户输入或SelectedIndex更改。
TextUpdated事件仅在用户更新文本时触发。
在我的程序中,我使用Items.Add("x")填充,使用SelectedIndex选择行。当用户选择不同的项目时,TextUpdated不会被激发。在TextUpdated中,我有代码可以在用户输入/更改更新后的文本时保存它。你必须从SelectionChangedCommitted中获取SelectedIndex,并将其保存到一个变量中,尽管TextUpdated内的SelectedIndex似乎只返回-1。