2012-02-08 5 views
0

У меня есть одна основная форма, и я хочу динамически изменять ее содержимое, нажимая несколько кнопок. Предположим, у меня есть кнопка «Новый пользователь» и «Вход», и если я нажимаю нового пользователя, я не хочу создавать новую форму + показать, я хочу, чтобы все ярлыки и кнопки нового пользователя отображались прямо в основная форма. И если я нажму логин, основной контент формы изменится на некоторые метки и текстовые поля? Это только, к примеру. Все, что я могу сделать, это просто создавать новые формы и показывать их пользователю через команду .Show().Как изменить содержание формы?

+0

Просьба уточнить, какая версия VB (VB6, VB.NET) и тег соответственно - тегирование «basic» не даст вам много хороших ответов. – Filburt

ответ

2

Предположим, у вас есть клиент, продукт и поставщик «окна». Вы не хотите создавать из них отдельные окна, поэтому вы группируете все свои элементы управления внутри групповых ящиков и делаете их видимыми/невидимыми в зависимости от действий пользователя. Это будет работать, но это приведет к проблемам чтения и сопровождения кода: вы пишете много кода для большого количества элементов управления внутри вашего окна, которое, в конце концов, всего лишь один класс.

Итак, вы можете сделать это: создать пользовательский элемент управления с именем usrCustomer или myCustomer или что угодно, и вставить в него все элементы управления, связанные с клиентом: групповой ящик, ярлыки, комбо, все. Затем вы можете решить, хотите ли вы добавить этот мега-элемент управления в свою основную форму во время разработки или если вы хотите создать новый экземпляр его во время выполнения каждый раз, когда вам это нужно. Если в будущем вам придется что-то изменить, вы перейдете в отдельный класс (ctlCostumer) вместо того, чтобы копаться внутри основного класса формы монстра.

CAVEAT: вам нужно быть осторожным, если эти элементы управления обмениваются информацией между ними (если мега-контроль продукта должен что-то знать из-за мегаконтроля клиента) и выставлять эту информацию с общедоступными свойствами и т. Д.

+0

Большое спасибо, мой друг. – Devfly

0

С точки зрения дизайна, создание новой формы намного лучше. В качестве альтернативы вы можете создать несколько новых элементов управления и скрыть/показать элемент управления. (Или сделать видимое свойство true/false)

Ярлык имеет свойство текста, которое вы можете изменить время выполнения.

+0

Это не отвечает на мой вопрос. У меня много текстовых полей и ярлыков кнопок. Это будет большой беспорядок, если я покажу/скрываю их. Я уверен, что у многих программ есть это. – Devfly

+0

Создайте различные родительские панели. Поместите на панель другой набор элементов управления. Показать/скрыть панель? –

+0

От ремонтопригодности/считывания. Разделите элементы управления на логические множества. Каждый набор может указывать разные состояния вашей программы. –

0

Если вы не хотите показывать новую форму, вы можете обернуть все элементы управления (метки, текстовые поля ....), которые связаны с вашим пользователем внутри контейнера, например simple Panel, и скрыть/показать в зависимости от вашего состояния формы.

+0

Да, я подумал об этом. Попытаюсь! – Devfly

Смежные вопросы