Во-первых, это вопрос о настольном приложении с использованием Windows Forms, а не ASP.NET вопрос.
Мне нужно взаимодействовать с элементами управления в других формах. Я пытаюсь получить доступ к элементам управления, используя, например, следующее...
otherForm.Controls["nameOfControl"].Visible = false;
Это не работает так, как я ожидал. Я получаю исключение из Main
. Однако, если я создаю элементы управления public
вместо private
, я могу получить к ним доступ напрямую, так как...
otherForm.nameOfControl.Visible = false;
Но лучший способ это сделать? Делает элементы управления public
на другой форме, считающейся "лучшей практикой"? Есть ли "лучший" способ доступа к элементам управления в другой форме?
Дальнейшее объяснение:
На самом деле это своего рода последующий ответ на другой вопрос, который я задал, Лучший способ создания диалогового окна с настройками вида дерева в С#?, Ответ, который я получил, был большим и решал многие, многие организационные проблемы, которые я испытывал с точки зрения постоянного и удобного управления пользовательским интерфейсом как во время исполнения, так и во время разработки. Тем не менее, это вызвало эту проблему, которая может легко управлять другими аспектами интерфейса.
В принципе, у меня есть корневая форма, которая создает множество других форм, которые находятся в панели в корневой форме. Так, например, переключателю на одной из этих подформ может потребоваться изменить состояние значка полосы состояния в основной, корневой форме. В этом случае мне нужна субформа, чтобы поговорить с элементом управления в полосе статуса родительской (корневой) формы. (Надеюсь, что это имеет смысл, а не "кто на первом" пути.)