C# 如何确定文本框中的文本是通过编程还是通过用户更改的
我们使用一个文本框来显示从I/O系统接收到的输入。如果用户在文本框中输入一些数据,该值将写入IO系统 我们使用ContextChanged事件将用户输入的数据写入IO系统 问题是,当我们将从IO系统接收到的值更新到文本框(从代码)时,会发生此事件C# 如何确定文本框中的文本是通过编程还是通过用户更改的,c#,wpf,uwp,textbox,textchanged,C#,Wpf,Uwp,Textbox,Textchanged,我们使用一个文本框来显示从I/O系统接收到的输入。如果用户在文本框中输入一些数据,该值将写入IO系统 我们使用ContextChanged事件将用户输入的数据写入IO系统 问题是,当我们将从IO系统接收到的值更新到文本框(从代码)时,会发生此事件 是否可以知道文本框的值是由用户更改的还是通过使用代码更改的?您可以设置一个名为IsUserInput的布尔变量,在I/O系统向文本框发送数据后,您需要将IsUserInput设置为false。 在文本框的KeyDown事件中,可以将变量设置为true。
是否可以知道文本框的值是由用户更改的还是通过使用代码更改的?您可以设置一个名为IsUserInput的布尔变量,在I/O系统向文本框发送数据后,您需要将IsUserInput设置为false。 在文本框的
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;
}
使用绑定和MVVM。不要把逻辑放在眼里。不,我需要找出文本更改事件中的这种差异,用于内部目的。将文本与您的模型进行比较。如果它不同,则是用户输入或执行另一个事件,如keydown,则不可能在
TextChanged
事件处理程序中找到它。在以编程方式设置Text
属性之前,您想做什么?