fd9750 Ответов: 3

Как изменить / изменить элементы управления.коллекция объект назначается с помощью конструктора visual studio


Привет,

Прошло уже 9 лет с тех пор, как я что-то делал VB.NET разработка и я никогда ничего не делали с приложениями с вкладками.
Я столкнулся с проблемой, когда хотел скопировать простое текстовое поле, которое было связано с элементами управления MainForm.Коллекция. Как только я скопировал и вставил его, используя конструктор, Visual Studio связала его с Управления.Коллекция видимой вкладки страницы, так что это закончилось примерно так:
Me.TabPage1.Controls.Add(Me.lblConnecting)

Но мне нужно было, чтобы это было так, потому что я хотел, чтобы это было показано на всех страницах вкладок
Me.Controls.Add(Me.lblConnecting)

Я нашел первую строку кода в Форму mainform.дизайнер.ВБ Затем я сделал то, что вы не должны делать: я изменил и переместил его в этом файле в коллекцию элементов управления MainForm, и, конечно же, он работал.

Хорошо: это сработало, но есть ли более традиционный способ сделать это в конструкторе Visual Studio?

Любой ответ/предложение очень ценится.

Что я уже пробовал:

Используйте Google широко и далеко, но никаких четких ответов. Много информации о том, как манипулировать control.collections с помощью кода, но не о том, как это сделать с помощью самого конструктора.

3 Ответов

Рейтинг:
27

RickZeeland

Если вы не хотите, чтобы дизайнер испортил ваши изменения, вы можете переместить lblConnecting в свой код, например, после инициализации формы InitializeComponent().


fd9750

Да, это должно было сработать. Я провел некоторое тестирование, и как только InitializeComponent выполнил код, он фактически оказался в функции Form_VisibleChanged (), где я мог бы добавить некоторый код для исправления любых ошибок, вызванных дизайнером.
Хотя это немного глупо - лечить такие вещи. Чтобы конструктор был действительно функциональным, он должен поддерживать переназначение элемента управления.Коллекция у него отобрана.

Рейтинг:
12

fd9750

Привет,

Я нашел еще один глупый способ решить эту проблему. Наше приложение должно работать на 800x480 ЖК-сенсорном экране, поэтому наши Основная форма и все вкладки именно такого размера.
Я могу заставить дизайнера скопировать текстовое поле и связать его с правильным элементом управления MainForm.Коллекция выглядит следующим образом:

- Откройте конструктор приложения.
- Выберите основную форму в окне свойств.
- Измените размер на 1600x480.
- Скопируйте метку/текстовое поле, которое я хочу дублировать.
- Поместите мой курсор в пустую дополнительную область основной формы.
- Скопируйте его туда => Он связывает скопированный элемент управления с правильным элементом управления.Коллекция.
- Выберите скопированный элемент управления с помощью мыши.
- Переместите элемент управления обратно в нужное положение в исходную область 800x480 (*).
- Сбросьте размер основной формы обратно до 800x480.

(*) Очень важно: используйте только клавиши курсора на клавиатуре для перемещения элемента управления, если для его перемещения используется мышь, дизайнер изменит целевой элемент управления.Коллекция, как только вы отпустите кнопку мыши.

Это действительно глупый способ, но он работает.


Рейтинг:
10

Dave Kreskowiak

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