如何识别文本框中的文本是通过编程还是通过用户更改的



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

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

问题是,当我们将从IO系统接收到的值更新到文本框(来自代码(时,我们会收到此事件。

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

您可以设置一个名为IsUserInput的布尔变量,在I/O系统将数据发送到文本框后,您需要将IsUserInput设置为false。在TextBox的KeyDown事件中,变量可以设置为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;
}

最新更新