Архив метки: add

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

Необходимо реализовать динамическое добавление панелей на форму со своими элементами внутри (к примеру label).

1. Создаем форму и кидаем 2 кнопки. Один Button отвечает за добавление, второй настроим на удаление.

2. создадим массив panel и label.

Panel[] pan = new Panel[5];
Label[] lb = new Label[5];

Их прописать после этой строчки

public partial class Form1 : Form
{

должно получиться так

public partial class Form1 : Form
{
Panel[] pan = new Panel[5];
Label[] lb = new Label[5];
......

3. пропишем следующий код для динамического добавления контролов на нашу форму

private void button1_Click(object sender, EventArgs e)
{

int j = 0;
for (int i = 0; i < pan.Length; i++)
{
//создаем динамически панель
pan[i] = new System.Windows.Forms.Panel();
pan[i].Location = new System.Drawing.Point(101, 50 + i * 30);
pan[i].Name = "paneld" + i.ToString();
pan[i].Size = new System.Drawing.Size(75, 23);
pan[i].BorderStyle = BorderStyle.FixedSingle;
pan[i].TabIndex = i;
//создаем динамически label
lb[j] = new System.Windows.Forms.Label();
lb[j].Location = new System.Drawing.Point(5, 5);
lb[j].Name = "labeld" + j.ToString();
lb[j].Text = "labeld" + j.ToString();

//привязываем панель к форме
Controls.Add(pan[i]);
//привязываем label к панели
pan[i].Controls.Add(lb[j]);
j++;
}
}

4. Прописать следующий код для удаления контрола из формы и всех связанных с ним

private void button2_Click(object sender, EventArgs e)
{
//удаляем label из контролов
pan[1].Controls.Remove(lb[1]);
//освобождаем память для label
lb[1].Dispose();
//то же для панели
Controls.Remove(pan[1]);
pan[1].Dispose();
}