В настоящее время у меня есть форма Windows, она содержит различные пользовательские элементы управления, которые можно отобразить одним нажатием кнопки, показывая только выбранный пользовательский элемент управления, обычно это отлично работает с кодом

Checkworkcontrol1.Show() Gradescontrol1.Hide() Submissioncontrol1.Hide()

Приведенный выше код используется в моей форме Windows для отображения конкретного пользовательского элемента управления, но у меня есть одно исключение, которое я пытаюсь реализовать, внутри одного из пользовательских элементов управления у меня есть кнопка, которая будет отображать другой пользовательский элемент управления в форме Windows но когда я пытаюсь реализовать тот же метод, он ничего не делает.

Mainpage.Submissioncontrol1.Show() Mainpage.Gradescontrol1.Hide() Mainpage.Checkworkcontrol1.Hide()

"Главная страница" - это форма окна

-1
Poro_doge 11 Мар 2018 в 02:52

1 ответ

Лучший ответ

В пользовательском элементе управления вам понадобится ссылка на форму. Из любого элемента управления в форме вы можете вызвать FindForm(), чтобы получить форму, в которой находится этот элемент управления. Также приведите его к нужному типу формы (имени формы), чтобы иметь доступ к определенным его членам.

Dim frm = DirectCast(FindForm(), Mainpage) ' Where Mainpage is the name of the form.
frm.Submissioncontrol1.Show()
frm.Gradescontrol1.Hide()
frm.Checkworkcontrol1.Hide()

В основной форме эти элементы управления должны быть Public (или Friend), чтобы они были доступны из пользовательского элемента управления.

Также я настоятельно рекомендую использовать Option Strict On и Option Explicit On, так как это выявит множество ошибок во время компиляции. См. Что делают Option Strict и Option Explicit?.

Если Mainpage - это имя формы, то ваш код не может работать, потому что ваша форма - это Class, т.е. Mainpage - это тип, а не объект формы.

0
Olivier Jacot-Descombes 11 Мар 2018 в 03:22