我正在尝试实现一种检测表单何时被用户修改的方法,并且我正在尝试使用INotifyPropertyChanged(INPC)接口来执行此操作。但是,我正在使用 Visual C# Express 设计器来管理所有表单元素。
我已经看到了很多如何使用 INPC 的示例,方法是在 Internet 上使用自己的成员字段和控件创建自己的类,但迄今为止,我从未见过 INPC 示例,其中它们将此接口合并到 .designer.cs(生成的)控件中,这些控件允许检测这些设计器生成的控件何时被修改。
有没有这方面的例子,或者这实际上会是什么样子?网上有这方面的例子吗?
:-(我已经为这个问题苦苦挣扎了一段时间了。如果有人能帮我,那就太好了。
附言我不能使用 Control.Textchanged 事件,因为当用户在 SelectedIndexChanged 期间更改控件所在的 TabControl 中的选项卡时,Binding.Format() 和 Binding.Parse() 会发送误报。
我可能是错的,但我认为您需要通过IComponentChangeService来让设计师知道更改。在自定义控件中,发生更改时,可以使用以下代码获取更改服务:
IComponentChangeService changeService = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
然后,您可以调用OnComponentChanged
,传递必要的信息。而且我认为,如果您希望撤消正常工作,您还应该在更改发生之前调用OnComponentChanging
。