我正在尝试实现一种检测用户何时修改表单的方法,并且我正在尝试使用INotifyPropertyChanged(INPC)接口来执行此操作。但是,我正在使用Visual C#Express Designer来管理所有表单元素。
我已经看到很多关于如何使用INPC的例子,通过在互联网上创建自己的成员字段和控件来创建自己的类,但是我从来没有见过INPC示例,他们将这个接口合并到了.designer.cs(生成)控件,用于检测何时修改了Designer生成的控件。
是否有这样的例子,或者这看起来几乎是什么样的?有没有这方面的在线示例?
:-(我一直在努力解决这个问题。如果有人能给我一个帮助,那就太棒了。
P.S。 我无法使用Control.Textchanged事件,因为当用户在SelectedIndexChanged期间更改控件所在的TabControl中的选项卡时,Binding.Format()和Binding.Parse()会发送误报。
答案 0 :(得分:0)
我可能错了,但我认为您需要通过IComponentChangeService让设计人员了解更改。在自定义控件中,当发生更改时,您可以使用以下代码获取更改服务:
IComponentChangeService changeService = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
然后你可以打电话给OnComponentChanged
,传递必要的信息。我想如果你想让undo能够正常工作,你也应该在改变之前调用OnComponentChanging
。