INotifyPropertyChanged в сгенерированном дизайнером WinForm для обнаружения измененных элементов управления - PullRequest
0 голосов
/ 10 мая 2011

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

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

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

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

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

1 Ответ

0 голосов
/ 10 мая 2011

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

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

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

...