首页 > 解决方案 > 如何识别文本框中的文本是否以编程方式或用户更改

问题描述

我们使用 TextBox 来显示从 I/O 系统接收到的输入。如果用户在文本框中输入了一些数据,该值将被写入 IO 系统。

我们正在使用 OnTextChanged 事件将用户输入的数据写入 IO 系统。

问题是当我们更新从 IO 系统接收到的值到文本框(来自代码)时,我们得到了这个事件。

是否可以知道 TextBox 的值是由用户更改还是使用代码更改?

标签: c#wpfuwptextboxtextchanged

解决方案


您可以设置一个名为IsUserInput的布尔变量,在 I/O 系统向文本框发送数据后,您需要将 IsUserInput 设置为 false。在KeyDownTextBox 的情况下,该变量可以设置为true。最后,您可以使用此变量来确定事件中的文本输入器textChanged

请参考以下代码。

public Boolean IsUserInput;

private void Button_Click(object sender, RoutedEventArgs e)
        {
            IsUserInput = false;
            myTextBox.Text = "hellohello";
          
        }

        private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (IsUserInput)
            {
//write data to I/O sytem
            }
           
        }

private void myTextBox_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            IsUserInput = true;
        }

推荐阅读