Как добавить элемент на форму c
Перейти к содержимому

Как добавить элемент на форму c

  • автор:

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

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

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

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

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

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

References

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

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

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

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

using System.Windows.Forms; using System.Drawing;

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

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

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

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

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

class Program < static void Main (string [] args) < >> class MyForm : Form

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

private void InitializeComponent() < //Установка свойств формы: //имя формы this.Name = "myForm"; //заголовок формы this.Text = "Новая форма"; //выводим форму по центру экрана this.CenterToScreen(); >

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

public MyForm() : base()

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

protected override void Dispose(bool disposing)

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

[STAThread] static void Main(string [] args)

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

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

System.Threading.Thread.CurrentThread.GetApartmentState().ToString();

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

Application.Run(new MyForm());

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

MyForm myForm = new MyForm();

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

Application.Run(myForm);

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

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

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

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

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

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

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

Output type

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

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

namespace Example < class Program < [STAThread] static void Main(string[] args) < Application.Run(new MyForm()); >> class MyForm : Form < public MyForm() : base() < InitializeComponent(); >private void InitializeComponent() < //имя формы this.Name = "myForm"; //заголовок this.Text = "Новая форма"; //форма по центру экрана this.CenterToScreen(); >protected override void Dispose(bool disposing) < base.Dispose(disposing); >> >

новая форма

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

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

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

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

private ListBox lstBox;

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

void InitializeComponent() < //Установка свойств формы //. //Установка свойств контрола listBox: lstBox = new ListBox(); //имя lstBox.Name = "MyListBox"; //ширина lstBox.Width = 100; //высота lstBox.Height = 100; //координаты расположения контрола на форме lstBox.Location = new Point(10, 20); >

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

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

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

this.Controls.Add(lstBox);

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

namespace Example < class Program < [STAThread] static void Main(string[] args) < Application.Run(new MyForm()); >> class MyForm : Form < private ListBox lstBox; public MyForm() : base() < InitializeComponent(); >private void InitializeComponent() < //Установка свойств формы: //. //имя формы this.Name = "myForm"; //заголовок this.Text = "Новая форма"; //выводим форму по центру экрана this.CenterToScreen(); //Установка свойств контрола listBox lstBox = new ListBox(); //имя lstBox.Name = "MyListBox"; //ширина lstBox.Width = 100; //высота lstBox.Height = 100; //координаты расположения контрола на форме lstBox.Location = new Point(10, 20); //Добавление контрола в коллекцию! Controls.Add(lstBox); >protected override void Dispose(bool disposing) < base.Dispose(disposing); >> >

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

control listBox

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

  • Чтение csv файла с выводом данных в GridView
  • Visual studio Insert snippet
  • Как найти html элемент по его классу?

2 комментария

Dmitriy :

У меня такой вопрос. А как сделать так, что бы созданная форма сохранялась в папке проекта, а не исчезала после остановки дебага? Например, если мне нужно нагенерировать несколько форм по шаблону? Подскажите, пожалуйста. Можно ли вообще осуществить такое, используя данный пример?
Заранее, спасибо.

А как сделать так, что бы созданная форма сохранялась в папке проекта Форма — это c# код, который хранится в обычном файле .cs, затем он компилируется в IL код при создание сборки (.exe файла), после чего в двоичный код уже при запуске самой сборки. В результате появляется форма, которую собственно и привыкли видеть.
То есть она хранится в файле. Например, если мне нужно нагенерировать несколько форм по шаблону? Если создать новый проект Windows Forms, то в реализации метода InitializeComponent (в конструкторе) будет код формы (по умолчанию Form1). Здесь можно добавить любое кол-во форм, просто копируя и изменяя названия добавляемого контрола в коллекции Controls, но для запуска нужно будет всё равно одну из них сделать главной. Не очень понятна задача.

Добавление элемента управления в форму (Windows Forms .NET)

Большинство форм создается путем добавления элементов управления на поверхность формы для определения пользовательского интерфейса. Элемент управления — это компонент в форме, используемый для вывода информации или ввода данных пользователем.

Основной способ добавления элемента управления в форму — с помощью конструктора Visual Studio, но вы также можете управлять элементами управления в форме во время выполнения с помощью кода.

Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.

Добавление с помощью конструктора

Для создания форм в Visual Studio используется конструктор форм. На панели «Элементы управления» представлен список всех элементов управления, доступных для приложения. Элементы управления можно добавлять с панели двумя способами:

Добавление элемента управления двойным щелчком

При двойном щелчке элемента управления он автоматически добавляется в текущую открытую форму с параметрами по умолчанию.

Добавление элемента управления путем рисования

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

Добавление с помощью кода

Элементы управления можно создавать и добавлять в форму во время выполнения с помощью коллекции Controls формы. Эту коллекцию можно также использовать для удаления элементов управления из формы.

Следующий код добавляет и размещает два элемента управления, Label и TextBox:

Label label1 = new Label() < Text = "&First Name", Location = new Point(10, 10), TabIndex = 10 >; TextBox field1 = new TextBox() < Location = new Point(label1.Location.X, label1.Bounds.Bottom + Padding.Top), TabIndex = 11 >; Controls.Add(label1); Controls.Add(field1); 
Dim label1 As New Label With Dim field1 As New TextBox With Controls.Add(label1) Controls.Add(field1) 

См. также

  • Установка текста, отображаемого элементом управления Windows Forms
  • Добавление сочетания клавиш доступа для элемента управления
  • System.Windows.Forms.Label
  • System.Windows.Forms.TextBox
  • System.Windows.Forms.Button

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавление элементов Windows Form программно

Но как быть с автоматическим добавлением элементов. Вот у меня есть такой код: Где я вручную добавил 18 элементов (Picture Box, и Label) поскольку это соответствует количеству спарсенных элементов списка. И в цикле уже присваивал им значения.

public void MainCol() < #region Boxes PictureBox[] boxes = < pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8, pictureBox9, pictureBox10, pictureBox11, pictureBox12, pictureBox13, pictureBox14, pictureBox15, pictureBox16, pictureBox17, pictureBox18>; Label[] labels = < label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13, label14, label15, label16, label17, label18>; Label[] qal = < qual1, qual2, qual3, qual4, qual5, qual6, qual7, qual8, qual9, qual10, qual11, qual12, qual13, qual14, qual15, qual16, qual17, qual18>; #endregion var parsing = namefilm.ProductlistItem(); int i = 0; foreach (var pars in parsing) < labels[i].Text = parsing[i].NameFilm; boxes[i].SizeMode = PictureBoxSizeMode.StretchImage; boxes[i].LoadAsync(parsing[i].ImageURl); qal[i].Text = parsing[0].Quality; LogTex2.Text += parsing[i].NameFilm + "\r\n"; LogTex2.Text += parsing[i].ImageURl + "\r\n"; LogTex2.Text += parsing[i].Quality + "\r\n"; i++; >> 

введите сюда описание изображения

Выглядит это все дело вот так. Но как сделать так, чтоб в созданный мной FlowLayoutPanel, добавлялась Panel а в эту панель уже добавлялся PictureBox, и Label в соответствии количества списка. А то сотню таких элементов добавлять будет уже не интересно. Благодарю за помощь.

Использование Visual C# для программного добавления элементов управления в формы Windows Forms во время выполнения

Эта статья поможет вам программным образом добавлять и настраивать элементы управления в форме Windows с помощью Visual C#.

Исходная версия продукта: Visual C #
Исходный номер базы знаний: 319266

Аннотация

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

Пакет SDK для microsoft платформа .NET Framework предоставляет множество визуальных элементов управления, которые можно использовать для создания Windows Forms приложения. Вы можете добавлять и настраивать элементы управления во время разработки в Visual Studio .NET или в Visual Studio. Элементы управления можно добавлять и настраивать программными средствами во время выполнения.

Требования

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Синтаксис Visual C#
  • Среда Visual Studio .NET, среда Visual Studio
  • Назначение общих элементов управления Visual C#

Создание приложения Windows Forms

  1. Запустите Visual Studio .NET или Visual Studio и создайте новый проект приложения Windows Visual C# с именем WinControls. Форма Form1 добавляется в проект по умолчанию.
  2. Дважды щелкните Form1, чтобы создать и просмотреть процедуру Form1_Load события.
  3. Добавьте в класс переменные частного экземпляра Form1 для работы с общими элементами управления Windows. Класс Form1 начинается следующим образом:
public class Form1 : System.Windows.Forms.Form < //Controls. private TextBox txtBox = new TextBox(); private Button btnAdd = new Button(); private ListBox lstBox = new ListBox(); private CheckBox chkBox = new CheckBox(); private Label lblCount = new Label(); //Other code. >

Примечание. Код следует изменить в Visual Studio. При создании проекта Windows Forms Visual C# добавляет в проект одну форму по умолчанию. Эта форма называется Form1. Два файла, которые представляют форму, называются Form1.cs и Form1.designer.cs. Вы пишете код в Form1.cs. В файле Designer.cs конструктор Windows Forms записывает код, который реализует все действия, выполненные путем добавления элементов управления. Дополнительные сведения о конструкторе Windows Forms в Visual C# см. в разделе Создание проекта (Visual C#).

Настройка свойств формы и элемента управления

  1. Найдите процедуру Form1_Load события и добавьте в процедуру следующий код, чтобы настроить внешний вид элемента управления Form:
 //Set up the form. this.MaximizeBox = false; this.MinimizeBox = false; this.BackColor = Color.White; this.ForeColor = Color.Black; this.Size = new System.Drawing.Size(155, 265); this.Text = "Run-time Controls"; this.FormBorderStyle = FormBorderStyle.FixedDialog; this.StartPosition = FormStartPosition.CenterScreen; 
 //Format controls. Note: Controls inherit color from parent form. this.btnAdd.BackColor = Color.Gray; this.btnAdd.Text = "Add"; this.btnAdd.Location = new System.Drawing.Point(90, 25); this.btnAdd.Size = new System.Drawing.Size(50, 25); 
 this.txtBox.Text = "Text"; this.txtBox.Location = new System.Drawing.Point(10, 25); this.txtBox.Size = new System.Drawing.Size(70, 20); 
 this.lstBox.Items.Add("One"); this.lstBox.Items.Add("Two"); this.lstBox.Items.Add("Three"); this.lstBox.Items.Add("Four"); this.lstBox.Sorted = true; this.lstBox.Location = new System.Drawing.Point(10, 55); this.lstBox.Size = new System.Drawing.Size(130, 95); 
 this.chkBox.Text = "Disable"; this.chkBox.Location = new System.Drawing.Point(15, 190); this.chkBox.Size = new System.Drawing.Size(110, 30); 
 this.lblCount.Text = lstBox.Items.Count.ToString() + " items"; this.lblCount.Location = new System.Drawing.Point(55, 160); this.lblCount.Size = new System.Drawing.Size(65, 15); 

Добавление элементов управления в форму

  1. Добавьте следующий код, чтобы добавить каждый объект в Controls массив формы в конце Form1_Load :
 //Add controls to the form. this.Controls.Add(btnAdd); this.Controls.Add(txtBox); this.Controls.Add(lstBox); this.Controls.Add(chkBox); this.Controls.Add(lblCount); 

Убедитесь, что он работает

Чтобы убедиться, что пример работает, выберите Пуск в меню Отладка .

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

Ссылки

Дополнительные сведения об использовании элементов управления программными средствами см. в разделе «Приложения Windows » раздела Visual C# справочной документации по Visual Studio .NET Online или в справочной документации по Visual Studio Online.

Обратная связь

Были ли сведения на этой странице полезными?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *