【问题标题】:How do I keep bindings from firing TextChanged event?如何防止绑定触发 TextChanged 事件?
【发布时间】:2011-03-17 13:55:06
【问题描述】:

我正在使用 Control.TextChanged 事件来检测用户何时修改了表单。我有一个方法可以遍历每个控件并将相同的 TextChanged 添加到所有控件。

我的问题是,在表单上,​​我还具有绑定具有 Binding.Format() 和 Binding.Parse() 的绑定的数据绑定,这些绑定在 TabControl 中。如果用户更改选项卡 (SelectedIndexChanged),它会激活 Format/Parse 并触发 TextChanged 事件,这使得表单看起来像是被修改了!

如何 (1) 阻止绑定或 Binding.Format 和 .Parse 触发 TextChanged 事件,或者 (2) 实施更好的方法来检测表单上的控件已被修改?

【问题讨论】:

    标签: c# data-binding textchanged


    【解决方案1】:

    不要检查实际的TextChanged 事件,而是检查支持属性并查看它们何时更改。您可以使用INotifyPropertyChanged 来帮助解决这个问题。

    【讨论】:

    • 嗯...你能给我提供一个例子吗?我在 MSDN 上编写了 iNPC,但我不太确定如何为我正在尝试做的事情实施它。我不清楚如何使用该属性。
    • 它是否以任何方式涉及msdn.microsoft.com/en-us/library/ms184414.aspx 中“如何:使用 BindingSource 和 INotifyPropertyChanged 接口引发更改通知?”的示例?