|
||||||||||||||||||||||||
Динамическое создание контроллов в VB .NET
Время создания: 23.03.2018 22:37
Текстовые метки: VB .NET
Раздел: VB
Запись: xintrea/mytetra_db_adgaver_new/master/base/1521833879i95hukkmjd/text.html на raw.githubusercontent.com
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
Динамическое создание контроллов в VB .NET Опубликовано Январь 1, 2016 автором Памирыч
Как программно создать объект
Visual Basic .NET
Как задать свойства этому объекту Показать Например, создаем новую кнопку с текстом «Кнопка»
Visual Basic .NET
Способ 2:
Visual Basic .NET
Замечу, что все свойства, что мы не указали явно, будут по умолчанию, например, цвет шрифта, ширина, высота кнопки и т.д. Как заставить объект «что-то уметь делать» Показать Мы должны задать соответствие нашего контролла какому-либо событию.
Visual Basic .NET
Она может называться не Btn_Click, а как угодно, но рекомендуется давать процедурам внятные имена, это является хорошим тоном в программировании. Теперь в процедуре создания кнопки мы добавляем код:
Visual Basic .NET
Получится следующее:
Visual Basic .NET
2 последние строчки могут быть в любом порядке Как узнать, в каком объекте было вызвано событие Показать Если мы создаем не один, а несколько объектов, например, кнопок, то невозможно описать всевозможные процедуры. Да это и не нужно. Нам просто достаточно добавить нужные параметры в процедуру:
Visual Basic .NET
Visual Basic .NET
sender — это и есть наша кнопка. Разные кнопки — разный sender. После точки Студия не предложит нам вариантов, так что пишем сами. Как удалить обработчик события с объекта Показать Немного усложним наш пример. Объявим глобально коллекцию кнопок:
Visual Basic .NET
Теперь процедура создания несколько изменилась:
Visual Basic .NET
Допустим, нам необходимо, чтобы событие в третьей кнопке более не обрабатывалось. Это сделает код:
Visual Basic .NET
С таким же успехом мы можем переопределить событие на другое
Visual Basic .NET
Если не удалить первый обработчик, то будут выполняться ОБЕ процедуры. Как создать форму, аналогичную текущей со всеми свойствами. Показать Задача решается аналогично
Visual Basic .NET
Аналогично задаются / меняются свойства, события и т.д,. Создание подобных форм можно реализовать, например, в ICQ-клиенте, когда у каждого написавшего сообщение пользователя открывается свое окно, с его сообщениями и другой его персональной информацией. Я хотел бы подчеркнуть, что хоть мы и пишем
Visual Basic .NET
Это вовсе не означает, что у новой формы будет имя «NewForm» Другое дело, когда мы создаем экземпляр Кнопки «С нуля». У такой кнопки нет ни имени, ни текста на ней. Поэтому все такие экземпляры — безымянны. Если бы мы аналогично создавали и форму, у ней бы так же не было имени. Итак, мы для идентификации объектов можем использовать их имена (Вспоминаем sender) Создавать новые контроллы мы можем, разумеется, не только на форме, а и на других объектах. Обращаю внимание, что координаты нового контролла будут рассчитываться не относительно формы, а относительно родительского объекта, например, если мы разместим свежеиспеченную кнопку с координатами {0, 0} на PictureBox, расположенного в центре формы, то контролл будет находиться в верхнем левом углу PictureBox, но не формы. И еще один пример создания кнопки с событием Используем WihtEvents вместо AddHandler:
Visual Basic .NET
|
||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
|