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