Я новичок во всем программировании winforms. В начале казалось, что весь код заканчивается. Я - основной класс формы. Поэтому я искал, как вы собираетесь организовывать код в приложениях winforms.C# winforms связь между пользовательскими элементами управления
Одно из решений, которое я пытаюсь сейчас, - это отдельные части интерфейса в пользовательских элементах управления.
Проблема в том, что я не уверен в наилучшем способе связи между элементами управления и основной формой. Например. Допустим, у меня есть приложение для редактирования чертежа формы. Существует основная форма и пользовательский элемент управления, который рисует объекты. Основная форма хранит объекты. И пользователь может выбирать объекты для редактирования, а выделенный объект должен быть выделен. Таким образом, каждый раз, когда выбор изменяется, основная форма должна указывать на управление отображением, какой объект теперь выбран. Представьте, если у меня было несколько пользовательских элементов управления, которым нужно было знать информацию о состоянии в основной форме. Каждый раз, когда что-то менялось, мне приходилось вызывать функции во всех элементах управления, чтобы они обновлялись. Таким образом, помимо основной формы, которая должна хранить ссылку на выбранный объект, все элементы управления также сохраняют ее. И я должен убедиться, что они все обновлены.
Еще одна проблема, я имею в виду, что у меня есть пользовательский элемент управления, который позволяет вам устанавливать свойства объектов, такие как размер или цвет. Чтобы основная форма знала, что свойство изменилось, мне нужно настраивать событие для каждого изменяемого параметра, а затем поднимать эти события всякий раз, когда изменяется текстовое поле или флажок и передается значение обратно. Это похоже на большую работу. Если бы все было в главной форме, было бы намного легче. Но тогда основным классом формы будет миллион строк.
Неужели я все это ошибаюсь?
@Rewinder, если я хочу подписаться на события в основной форме из пользовательского элемента управления, означает ли это, что пользовательскому элементу управления требуется ссылка на основную форму? – terryhau
@terryhau: Да, это так. Лучшее место для этого, вероятно, будет конструктором пользовательского элемента управления. –
@ Rewinder, если это так, то не лучше ли мне просто читать переменную непосредственно из основной формы, а не каждый элемент управления, сохраняющий свои собственные, и получая его обновленным событием. – terryhau