VB - Ссылочный контроль через строку, хранящуюся в My.Settings - PullRequest
0 голосов
/ 14 марта 2020

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

У меня есть PNLHome, PNLServerSettings, PNLScripts и PNLSettings в качестве основные панели. Каждое из свойств Panels .Name: «PNLHome», «PNLServerSettings», .... et c.

Я хочу иметь возможность изменять «Экран запуска» в зависимости от выбранного вами выбора. в ComboBox в PNLSettings, поэтому, когда вы запускаете приложение, панель, которая сразу отображается, основана на этом выборе ComboBox.

У меня есть элементы ComboBox на месте, и у меня есть функция, которая скрывает все панели и показывает тот, который вы передаете в него: например, showPanel (PNLHome), который, по сути, просто покажет панель, которую вы ему дадите, все это работает нормально. Эта функция showPanel () запускается при нажатии одной из основных кнопок на левой боковой панели

. Я хочу передать строку Control.Name в showPanel () fun c, а затем сохранить ее. Строка .Name в My.Settings с помощью кнопки «Сохранить / Применить» на панели настроек, которую я могу легко настроить.

Поскольку я буду передавать строку .Name в функцию showPanel (), мне нужно чтобы иметь возможность ссылаться на панель, которую я показываю, по ее названию, а не по самому идентификатору объекта (я не уверен, называется ли он идентификатором, но это «имя», объявляющее Panel через объявление «DIM WithEvents PNLHome As Panel») .

Чтобы подвести итог вопроса: могу ли я ссылаться на PNLHome по его свойству .Name? В противном случае я могу вместо этого сохранить идентификатор PNLHome непосредственно в My.Settings? Я мог бы легко передать My.Settings.StartPanel в мою showPanel. () весело c.

1 Ответ

0 голосов
/ 16 марта 2020

Просто используйте коллекцию Controls, чтобы найти элемент управления.

Private Function GetPanel(PanelName As String) As Panel
    Dim SomePanel As Panel = CType(Controls(PanelName), Panel)
    Return SomePanel
End Function
...