【问题标题】:TextChange event of textbox is user initiated in wpf文本框的 TextChange 事件是用户在 wpf 中发起的
【发布时间】:2014-05-27 10:55:23
【问题描述】:

如何确定文本框的 TextChange 事件是由用户发起的? 即使我通过代码更改文本,也会触发 TextChange 事件。 但是只有当用户在 GUI 上更改文本时,我才需要获取该事件。

【问题讨论】:

    标签: wpf textchanged


    【解决方案1】:

    使用PreviewTextInput 事件。仅当用户在 TextBox 中输入文本时才会调用此事件,而不是在您更改代码中的文本时调用该事件

    【讨论】:

    • 据我所知,退格也被忽略了...... :(
    【解决方案2】:

    使用字段,您可以以封装的方式检查 TextChanged 事件处理程序内部:

    internal void SetTextProgrammatically(string newValue)
    {
        this.suppressTextChanged = true;
        try
        {
            // Set Text
            textBox.Text = newValue;
        }
        finally
        {
            this.suppressTextChanged = false;
        }
    }
    

    当您通过代码设置文本时,使用SetTextProgrammatically。在TextChangedHandler 中只需检查suppressTextChanged 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多