INotifyPropertyChanged в созданной дизайнером форме WinForm для обнаружения измененных элементов управления

Я пытаюсь реализовать способ обнаружения, когда форма была изменена пользователем, и я пытаюсь использовать для этого интерфейс INotifyPropertyChanged (INPC). Но я использую Visual C# Express Designer для управления всеми элементами формы.

Я видел множество примеров того, как использовать INPC, создавая свой собственный класс с его собственными полями-членами и элементами управления в Интернете, но до сих пор я никогда не видел примера INPC, в котором этот интерфейс был бы включен в .designer. cs (созданные) элементы управления, которые позволят определить, когда эти элементы управления, созданные конструктором, были изменены.

Есть ли пример этого или как это будет выглядеть на практике? Есть ли подобные примеры в сети?

:-( Я уже некоторое время борюсь с этой проблемой. Если бы кто-нибудь вообще мог мне помочь, это было бы замечательно.

P.S. Я не могу использовать событие Control.Textchanged, потому что Binding.Format() и Binding.Parse() отправляют ложные срабатывания, когда пользователь меняет вкладки в TabControl, в которых находятся элементы управления во время SelectedIndexChanged.


person Isaac    schedule 10.05.2011    source источник


Ответы (1)


Я могу ошибаться, но я думаю, что вам нужно пройти через IComponentChangeService, чтобы сообщить дизайнеру об изменениях. В пользовательском элементе управления, когда происходит изменение, вы можете использовать следующий код для получения службы изменений:

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

Затем вы можете позвонить по нему OnComponentChanged, передав необходимую информацию. И я думаю, что если вы хотите, чтобы отмена работала правильно, вы также должны вызывать OnComponentChanging до того, как произойдет изменение.

person Mike Dour    schedule 10.05.2011