Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


c# Как программно добавить контрол на форму

В этой статье рассмотрим процесс программного добавления визуального элемента управления (Control) на форму.

Подготовительная работа

Открываем программу Visual Studio и создаем новое консольное приложение.

Хотя проект и создается на основе консольного приложения, это лишь возможность избавиться от написанного студией большого объема готового кода, при использовании стандартных шаблонов проектов. Не смотря на это, работать наше приложение будет по принципу Windows Forms, для этого в наш проект понадобиться добавить две дополнительных сборки.

Перейдите в окно Solution Explorer и нажмите правую кнопку мыши на папке References, после чего выберите пункт Add Reference.

References

Откроется новое окно. Перейдите на вкладку .NET, найдите в списке сборку System.Windows.Forms, выделите её и нажмите ОК. Точно так же найдите и добавьте сборку System.Drawing.

Добавление сборок в проект

Результат

две добавленных сборки

Так же добавьте две ссылки

System.Windows.Forms, содержит различные типы для создания Windows Forms приложений с графическим пользовательским интерфейсом.

System.Drawing предоставляет возможность работы с API GDI+, которое применяется для создания двухмерной графики.

Создание формы

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

Для создания формы потребуется создать новый класс по имени MyForm,(имя класса может быть любым)который наследуется от класса Form.

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

Затем опишем конструктор нашего класса, в который поместим ранее описанный метод.

И в конце переопределим метод Dispose.

Теперь выведем нашу форму на экран. Переходим в класс Program, где для начала добавим перед методом Main, атрибут по имени STAThreadAttribute.

Данный атрибут устанавливает потоковую модель COM в однопоточный режим, если не указать данный атрибут, то будет использоваться многопоточный режим [MTAThread]. Здесь есть простое правило, если Вы создаете Windows Forms приложение, то используйте атрибут [STAThread], чтобы избежать проблем при взаимодействии с COM компонентами.


Codeby Security School от Сodeby

Мы запустили свою онлайн школу по информационной безопасности. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного в курсе Paranoid


Если вам потребуется получить или узнать текущий режим потоковой модели COM, то можно использовать следующий код:

Затем в теле метода Main поместим всего одну строчку кода

В качестве параметра передается объект — наша созданная форма, так же можно использовать и следующую запись:

и уже в качестве параметра передать не сам объект, а ссылку на него.

Метод Run делает нашу форму видимой и запускает стандартный цикл обработки сообщений. Так же, в данный метод могут вноситься изменения, если, к примеру, у вас есть две или более формы, и нужно указать какая из них будет выводиться первой при запуске приложения, тогда в качестве параметра вы передаете имя нужной формы (главной формы).

Всё готово к первому запуску, нажимаем кнопку F5.

На экране должно появиться стандартное консольное окно, если его отодвинуть, то за ним будет находиться наша созданная форма.

консольное окно

Чтобы консольное окно не мешало, отключим его. Перейдём в окно Solution Explorer и нажмём правую кнопку мыши на имени текущего проекта, после чего выберем в списке пункт Properties.

свойства проекта

Открываем вкладку Application, находим надпись Output type и выпадающем списке выбираем пункт Windows Application.

Output type

Закрываем окно свойств и снова нажимаем F5. Консольное окно больше не мешает и отображается только созданная нами форма.

Полный листинг создания формы

Результат

новая форма

Форма создана, теперь научимся добавлять на неё визуальные пользовательские элементы управления или, проще говоря, контролы. В качестве примера программно добавим на нашу форму сontrol ListBox.

Добавление контрола на форму

Чтобы добавить визуальный элемент управления на форму понадобиться выполнить 3 действия:

1. Создать поле типа ListBox;

2. Настроить внешний вид элемента управления, например, задав ему высоту, ширину, имя, координаты места расположения на форме и так далее. Установка значений свойств контрола будет, выполняется в ранее созданном методе InitializeComponent.

3. Добавление контрола в коллекцию управляющих элементов.

Чтобы увидеть созданный control на форме, его надо поместить в коллекцию элементов управления, которая представлена свойством Controls.

Для добавления нового элемента в коллекцию используйте метод Add.

В данном случае ключевое слово this является необязательным.

Полный листинг

Нажимаем на клавиатуре кнопку F5, после чего на форме должен появляется визуальный элемент управления ListBox.

control listBox

В следующей статье рассмотрим создание собственных контролов.

Читайте также:


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

Моделирование сети Петри на С++... Постановка задачи: Разработать программу, моделирующую работу сетей Петри, с возможностью автоматического моделирования и проверки в ручном реж...
WebBrowser основные свойства для работы с контенто... WebBrowser работа с контентом И так, html страница была полностью загружена в control webBrowser, и теперь можно переходить к обработке полученных да...
Программирование для хакеров — 2... Тут начинали переводить статьи из цикла "программирование для хакеров": Введение. Ну а я продолжу. Однако, мой перевод будет невероятно вольным, а...
основные компоненты .NET Framework (CLR и Framewor... Основные компоненты .NET Framework (CLR и Framework Class Library) В первой статье Вы узнали, что платформа .NET Framework состоит из 2 основных компо...
Как можно быстро получить все буквы русского или а... Как можно быстро получить все буквы русского или английского алфавита? Просматривая исходник одной из программ, увидел следующую строку: Как видно...