我有一个典型的catch-22问题。我有一个包含文本框和复选框的 .NET WinForm 控件。这两个控件都是绑定到数据类实例上的属性的数据。文本框用于价格,复选框表示价格是价格覆盖。数据类上还有一个属性,用于保存商品的原始价格。
我希望控件遵守以下规则:
- 当用户在价格文本框中输入值时,会自动选中复选框以指示他们正在覆盖价格值
- 取消选中该复选框时,该项目的价格将恢复为原始价格。
当用户取消选中复选框时,事件处理程序测试选中状态,并将项目的价格属性设置为原始价格值。但是,价格值是数据绑定的,会触发一个绑定事件,该事件会更新文本框值,该值会触发文本更改事件处理程序,该处理程序重新检查复选框。
我试图捕获我明确更新会触发控件更改事件的内容的条件。但这仅适用于其中的一部分。文本框更改事件在我无法控制的其他时间触发,例如在最初显示表单时触发数据绑定。
我一直在四处寻找,我想我只是没有想出正确的搜索词来找到我正在寻找的东西。数据绑定似乎非常美妙,直到你需要用它做一些实际的事情,比如让两个绑定控件相互交互。似乎没有办法区分触发控制事件的原因。
我还查看了绑定源组件上可用的事件,但似乎没有任何更有用的东西。我可以处理绑定完成后触发的事件,但那是在问题发生之后。
有人有什么建议吗?