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