是否有可能知道任何文本框值是否在应用程序中发生了更改。 我有大约30个文本框,我只想运行一部分代码,如果任何一个文本框的值已经改为30以外。有没有办法我可以知道。文本框值已更改
Q
文本框值已更改
3
A
回答
7
当内容发生变化时,每个文本框将引发事件TextChanged
。但是,这要求您订阅每个事件。
好消息是,您可以多次使用相同的方法订阅活动。处理程序有一个参数sender
,您可以使用该参数来确定您的30个文本框中的哪一个实际上引发了该事件。
您还可以使用GotFocus和LostFocus事件来跟踪实际更改。您需要将原始值存储在GotFocus
上,然后与LostFocus
上的当前值进行比较。这解决了两个TextChanged
事件相互抵消的问题。
2
您可以为每个TextBox的TextChanged事件分配一个事件处理程序。所有这些都可以在代码中分配给相同的事件处理程序。然后你会知道文本何时改变。您可以在课程中设置一个布尔标志字段来记录发生了变化。
1
试试这个。将此代码添加到加载/构造函数。不需要在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 }
}
1
这可能是粗糙和准备好的一面,但我是这样做的。
在构造中,我创建
布尔bChanged = FALSE;
在每个控制(实际上相同的每个)的TextChanged事件处理程序中,我把
bChanged = TRUE;
适当时,我可以做一些处理,并将bChanged设置为false。
1
你也可以这样做:
在构造函数:
MyTextBox.TextChanged += new TextChangedEventHandler(TextChanged);
然后将此方法:
private void TextChanged(object Sender, TextChangedEventArgs e){
//Do something
}
相关问题
- 1. Jade:文本框更改值=“...”
- 2. 更改文本框值
- 3. 只获取值已更改的文本框
- 4. VB.NET文本框已更改,但仍然保存初始值
- 5. 改变多个文本框的值使用AJAX文本框中的值更改
- 6. 使用javascript更改文本框值时更改标签值
- 7. 如何检查文本框文本已更改
- 8. 确定哪个文本框已触发文本更改事件
- 9. 获取文本框文本,JavaScript已更改
- 10. 文本框更改
- 11. 更改文本框
- 12. 我已将数字绑定到CombBox。我想要更改值组合框和文本框更改值
- 13. 将文本框值更改为+/- 10
- 14. excel vba根据值更改文本框
- 15. 更改文本框中的存储值
- 16. 更改选择框的值文本
- 17. 捡起ASP文本框的更改值
- 18. 更改事件内的文本框值?
- 19. 根据复选框值更改文本
- 20. 防止更改文本框的值
- 21. 从下拉值更改文本框
- 22. JavaScript更改文本框值onchange
- 23. 如何更改文本框的值?
- 24. 动态更改文本框的值?
- 25. 更改文本框中的值问题
- 26. 其他文本框文本更改时更改文本框的文本
- 27. apsx.cs文件中的文本框不会更新已更改的文本
- 28. 更改已禁用复选框的值
- 29. 更改组合框的ListItem文本而不更改其值
- 30. 在更改下拉列表时更改文本框的值
的问题是 “有值改为” 不“有TextChanged事件触发“。如果用户将文本“香蕉”编辑为“bananaX”,然后按退格,他又回到“香蕉”......并且没有任何变化。肮脏的检测从WPF控件丢失... – Jack 2013-02-21 18:56:15
@杰克 - 增加了一个可能的解决方案。 – ChrisF 2013-02-21 22:37:58
如果使用MVVM + Binding,那么在WPF中没有简单的方法来做到这一点,因为Binding类(它完全可以检测正在编辑的)不会... – Jack 2013-02-23 08:04:52