文本框值已更改
是否可以知道应用程序中是否有任何文本框值已更改。 我有大约30个文本框,我想只运行一部分代码,如果任何文本框的值已经改变了30.有没有办法我可以知道。
当文本内容发生变化时,每个文本框都会引发一个事件TextChanged
。 但是,这需要您订阅每个事件。
好消息是您可以多次使用相同的方法订阅事件。 处理程序有一个参数sender
,您可以使用它来确定30个文本框中的哪些实际上已经引发了事件。
您还可以使用GotFocus和LostFocus事件来跟踪实际更改。 您需要将原始值存储在GotFocus
,然后与LostFocus
上的当前值进行比较。 这解决了两个TextChanged
事件相互抵消的问题。
您可以为每个TextBox的TextChanged事件分配一个事件处理程序。 所有这些都可以在代码中分配给同一个事件处理程序。 然后你会知道文本何时发生变化。 您可以在类中设置布尔标志字段以记录发生的更改。
这可能是在粗略和准备的一面,但我这样做了。
在构造函数中,我创建了
bool bChanged = false;
在每个控件的TextChanged事件处理程序中(实际上每个控件都相同),我放了
bChanged = true;
在适当的时候,我可以做一些处理,并将bChanged设置为false。
你也可以这样做:
在您的构造函数中:
MyTextBox.TextChanged += new TextChangedEventHandler( TextChanged );
然后这个方法:
private void TextChanged(object Sender, TextChangedEventArgs e){ //Do something }
试试这个。 将此代码添加到加载/构造函数。 无需显式指定XAML中的事件
this.AddHandler(TextBox.TextChangedEvent, new TextChangedEventHandler(TextChanged)); private void TextChanged(object Sender, TextChangedEventArgs e) { //ToDO (use sender to identify the actuale text from where it fired } }