0

我试图实现一种方式来检测何时一个窗体已被用户修改,我试图使用INotifyPropertyChanged(INPC)接口来做到这一点。但是,我正在使用Visual C#Express Designer来管理所有表单元素。INotifyPropertyChanged在设计器生成的WinForm中检测修改控件

我见过很多关于如何通过在互联网上创建自己的具有自己的成员字段和控件的类来使用INPC的例子,但我从来没有见过一个INPC例子,他们将这个接口合并到.designer.cs(生成的)控件可以检测那些Designer生成的控件何时被修改。

有没有一个这样的例子,或者这看起来像几乎?有没有在线的例子?

:-(我一直在这个问题有一段时间了挣扎。如果任何人都可以给我一个帮助了,这将是美妙的。

PS 我不能使用Control.Textchanged事件,因为当用户更改TabControl中的选项卡时,Binding.Format()和Binding.Parse()发送误报,控件在SelectedIndexChanged期间处于控制状态。

回答

0

我可能是错的,但我认为您需要通过IComponentChangeService让设计人员知道更改。在您的自定义控件中,发生更改时,可以使用以下代码获取更改服务:

IComponentChangeService changeService = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService; 

然后你可以打电话给OnComponentChanged,传递必要的信息。我想如果你想撤销正常工作,你也应该在更改发生之前调用OnComponentChanging

相关问题