【发布时间】:2014-05-27 10:55:23
【问题描述】:
如何确定文本框的 TextChange 事件是由用户发起的? 即使我通过代码更改文本,也会触发 TextChange 事件。 但是只有当用户在 GUI 上更改文本时,我才需要获取该事件。
【问题讨论】:
标签: wpf textchanged
如何确定文本框的 TextChange 事件是由用户发起的? 即使我通过代码更改文本,也会触发 TextChange 事件。 但是只有当用户在 GUI 上更改文本时,我才需要获取该事件。
【问题讨论】:
标签: wpf textchanged
使用PreviewTextInput 事件。仅当用户在 TextBox 中输入文本时才会调用此事件,而不是在您更改代码中的文本时调用该事件
【讨论】:
使用字段,您可以以封装的方式检查 TextChanged 事件处理程序内部:
internal void SetTextProgrammatically(string newValue)
{
this.suppressTextChanged = true;
try
{
// Set Text
textBox.Text = newValue;
}
finally
{
this.suppressTextChanged = false;
}
}
当您通过代码设置文本时,使用SetTextProgrammatically。在TextChangedHandler 中只需检查suppressTextChanged 的值。
【讨论】: