Динамическое добавление элементов windows forms

Контейнеры в Windows Forms

Для организации элементов управления в связанные группы существуют специальные элементы — контейнеры. Например, Panel, FlowLayoutPanel, SplitContainer, GroupBox. Ту же форму также можно отнести к контейнерам. Использование контейнеров облегчает управление элементами, а также придает форме определенный визуальный стиль.

Все контейнеры имеют свойство Controls , которое содержит все элементы данного контейнера. Когда мы переносим какой-нибудь элемент с панели инструментов на контейнер, например, кнопку, она автоматически добавляется в данную коллекцию данного контейнера. Либо мы также можем добавить элемент управления динамически с помощью кода в эту же коллекцию.

Динамическое добавление элементов

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

С помощью перетаскивания элементов с Панели Инструментов мы можем легко добавить новые элементы на форму. Однако такой способ довольно ограничен, поскольку очень часто требуется динамически создавать (удалять) элементы на форме.

Для динамического добавления элементов создадим обработчик события загрузки формы в файле кода:

Теперь добавим в него код добавления кнопки на форму:

Сначала мы создаем кнопку и устанавливаем ее свойства. Затем, используя метод Controls.Add мы добавляем ее в коллекцию элементов формы. Если бы мы это не сделали, мы бы кнопку не увидели, поскольку в этом случае для нашей формы ее просто не существовало бы.

С помощью метода Controls.Remove() можно удалить ранее добавленный элемент с формы:

Хотя в данном случае в качестве контейнера использовалась форма, но при добавлении и удалении элементов с любого другого контейнера, например, GroupBox, будет применяться все те же методы.

Практическое руководство. Добавление элементов управления в формы Windows Forms. How to: Add Controls to Windows Forms

Большинство форм разрабатываются путем добавления элементов управления на поверхность формы для определения пользовательского интерфейса. Most forms are designed by adding controls to the surface of the form to define a user interface (UI). Элемент управления — это компонент в форме, используемый для вывода информации или ввода данных пользователем. A control is a component on a form used to display information or accept user input. Дополнительные сведения об элементах управления см. в разделе элементы управления Windows Forms. For more information about controls, see Windows Forms Controls.

Рисование элемента управления в форме To draw a control on a form

Откройте форму. Open the form. Дополнительные сведения см. в разделе инструкции. отображение Windows Forms в конструкторе. For more information, see How to: Display Windows Forms in the Designer.

В области элементов щелкните элемент управления, который необходимо добавить в форму. In the Toolbox, click the control you want to add to your form.

Читайте также:  Ubuntu remote desktop from ubuntu to windows

В форме щелкните место, где должен располагаться левый верхний угол элемента управления, и перетащите его в то место, где должен располагаться правый нижний угол элемента управления. On the form, click where you want the upper-left corner of the control to be located, and drag to where you want the lower-right corner of the control to be located.

Элемент управления добавляется в форму с указанными расположением и размером. The control is added to the form with the specified location and size.

Для каждого элемента управления определен размер по умолчанию. Each control has a default size defined. Можно добавить элемент управления в форму в размер элемента управления по умолчанию, перетащив его из области элементов в форму. You can add a control to your form in the control’s default size by dragging it from the Toolbox to the form.

Перетаскивание элемента управления в форму To drag a control to a form

Откройте форму. Open the form. Дополнительные сведения см. в разделе инструкции. отображение Windows Forms в конструкторе. For more information, see How to: Display Windows Forms in the Designer.

На панели элементов щелкните нужный элемент управления и перетащите его в форму. In the Toolbox, click the control you want and drag it to your form.

Элемент управления добавляется в форму в указанном расположении в его размер по умолчанию. The control is added to the form at the specified location in its default size.

Можно дважды щелкнуть элемент управления на панели элементов , чтобы добавить его в левый верхний угол формы в его размер по умолчанию. You can double-click a control in the Toolbox to add it to the upper-left corner of the form in its default size.

Кроме того, можно динамически добавлять элементы управления в форму во время выполнения. You can also add controls dynamically to a form at run time. В следующем примере кода TextBox элемент управления будет добавлен в форму при Button щелчке элемента управления. In the following code example, a TextBox control will be added to the form when a Button control is clicked.

Следующая процедура требует наличия формы с элементом управления Button , Button1 уже размещенным в ней. The following procedure requires the existence of a form with a Button control, Button1 , already placed on it.

Добавление элемента управления в форму программным способом To add a control to a form programmatically

В методе, обрабатывающем событие кнопки Click в классе формы, вставьте код, аналогичный приведенному ниже, чтобы добавить ссылку на переменную элемента управления, задать элемент управления Location и добавить элемент управления. In the method that handles the button’s Click event within your form’s class, insert code similar to the following to add a reference to your control variable, set the control’s Location , and add the control.

Можно также добавить код для инициализации других свойств элемента управления. You can also add code to initialize other properties of the control.

Читайте также:  Canon f158300 драйвер windows 10

Вы можете предоставить локальному компьютеру угрозу безопасности через сеть, обратившись к вредоносной программе UserControl . You might expose your local computer to a security risk through the network by referencing a malicious UserControl . Это будет проблемой только в случае, если злоумышленник создает вредоносный пользовательский элемент управления, а затем добавляет его в проект по ошибке. This would only be a concern in the case of a malicious person creating a damaging custom control, followed by you mistakenly adding it to your project.

Динамическое добавление элементов на форму

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

Динамическое добавление textBox на форму
ребята такой вопрос как можно сделать так что бы когда мы нажимаем на кнопку (+) получаем еще одно.

Динамическое добавление DataGridView на форму
Подскажите, пожалуйста, как динамически добавить DataGridView. Зарание извините за повтор, может.

Динамическое добавление компонентов на форму при изменении numericupdown
Добрый день. Столкнулся со следующей проблемой: добавляю textbox и label компоненты динамически.

ругается на (var box = tb[—count])

Добавлено через 22 минуты
Если что, то вот код:

Благодарю! Правда когда удаляешь последнюю строку и после этого еще раз нажимаешь удалить возникает проблема:

System.ArgumentOutOfRangeException не обработано
Message=Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
Source=mscorlib
ParamName=index
StackTrace:
в System.ThrowHelper.ThrowArgumentOutOfRangeException()
в System.Collections.Generic.List`1.get_Item(Int32 index)
в test2.Form1.удалитьСтрокуToolStripMenuItem_Click(Object sender, EventArgs e) в d:\Test\test2\Form1.cs:строка 50
в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventA rgs e)
в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
в System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventA rgs mea)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ToolStrip.WndProc(Message& m)
в System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Mes sage& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MS G& msg)
в System.Windows.Forms.Application.ComponentManager.System.Win dows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMes sageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoo pInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoo p(Int32 reason, ApplicationContext context)
в test2.Program.Main() в d:\Test\test2\Program.cs:строка 17
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssem bly()
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:

Тематические курсы и обучение профессиям онлайн
Профессия‌ С#-разработчик‌ (Skillbox)
Архитектор ПО (Skillbox)
Профессия Тестировщик (Skillbox)

Добрый день! А не подскажете еще, как мне из textbox’ов (их число не известно) первой формы передать в textbox’ы второй формы. на второй форме что то вроде отчетной формы состоящей из textbox’ов.

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

Возможно ли Динамическое добавление контролов на форму из другого класса
к примеру есть форма Form1 есть класс CreateBoard и метод public static void Create() .

Реализовать динамическое добавление/удаление компонентов textbox на форму
Добрый день! Каким образом можно реализовать динамическое добавление/удаление компонентов textbox.

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

Динамическое добавление элементов в GroupBox
Создаю кучу элементов и хочу их объеденить(добавить в группу) чтобы при нажатии кнопки я мог.

Читайте также:  Mac os диски ntfs не записывает

Динамическое создание элементов интерфейса

Динамическое создание элементов интерфейса
С Новым Годом, друзья. В общем, печалька у меня: создаю элементы, а в обработчиках события не знаю.

Динамическое создание элементов интерфейса вынесено в отдельный класс. Доступ к Controls главной формы
Из Ответы на 7 самых частых вопроса по WinForms Пример динамического создания кнопки: .

Создание элементов интерфейса по данным из БД
Здравствуйте. Вопрос в следующем: есть приложение, есть база данных, условно в базе данных в нужной.

Динамическое создание элементов
Доброго времени суток, форумчане! Есть такая проблемка: нужно динамически создавать новую форму, в.

А как не объявляя вне функции глобальные переменные, создать на панели в цикле необходимое количество лейблов и картинок, с вертикальной прокруткой?

Добавлено через 1 час 30 минут
нашел вариант решения, но вылазит ошибка:
System.IndexOutOfRangeException не обработано
Message=Индекс находился вне границ массива.
Сам используемый код:

i и j- независимые переменные, и соответственно лейблы создаются, пока идет цикл по i. но создаються они по j.
Там кстати, перед началом цикла есть строка:
public int j=2;

P.S. У всех бывает).

встречаеться многострочный текст. Как о можно перенести этот многострочный текст в лейблы? Или хотя бы подскажите, как эти переносы с xml можно заменить на лейбловские переносы \r\ ?

есть такой метод string.Replace([что], [на что]);

например так: string.Replace(«<br>», Environment.NewLine); хотя уж как-то слишком подозрительно перенос выглядит. если там просто «\r», то всё еще проще. глянь кодировки

Эффект какой-то, мягко говоря, кривой.

Добавлено через 3 минуты
P.s. Пока что этот вопрос можно отложить, поскольку решили, пока проэкт в начальной стадии, то перенести его на WPF. Кстати, кто-то может скинуть ссылку хоть на какой-то маломальский тутор по Microsoft Expression Blend 4?

Тематические курсы и обучение профессиям онлайн
Профессия‌ С#-разработчик‌ (Skillbox)
Архитектор ПО (Skillbox)
Профессия Тестировщик (Skillbox)

Есть вопрос как можно размешать лейбелов виде таблицы
т.е например в tabPage1 создаем 20 дин.лейбел и их расположение должно выглядеть примерно так

label1 label2 label3 label4 label5
label6 label7 label8 label9 label10
label11 label12 label13 label14 label15

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

Динамическое создание элементов управления
в общем, код написан верно (вроде как), проверял его изначально (добавлял компоненты, к ним код и.

Динамическое создание элементов формы
Подскажите, пожалуйста вот этот код Label nbomb = new Label(); nbomb.Name = «bomb» + bcount;.

Динамическое создание элементов с использованием DLL
Доброго всем времени суток! Можно ли сделать так, чтобы при вызове определенной функции (на.

Динамическое создание и удаление элементов управления
В конструкторе есть комбобокс, нужно отображать n-ое кол-во textbox и label, в зависимости от.

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

Динамическое создание различных элементов управления в зависимости от условия
Помогите решить задачу. Написать программу с кнопкой и тремя полями ввода. При нажатии на кнопку.

Оцените статью