C # Удаление динамически созданных элементов управления в flowLayoutPanel - PullRequest
0 голосов
/ 19 апреля 2019

Таким образом, сценарий: UserControl с: 1 GroupBox внутри: 2 combobox, 1 textbox, 1 richtextbox и 1 button для "удалить groupBox"

Форма: 1 кнопка (для добавления groupBox) и flowLayoutPanel

Моя проблема: я могу добавить столько компонентов groupBox, сколько захочу, но когда нажимаю кнопку «Удалить groupBox»", в" Форме 1 ", если я делаю:

FlowLayoutPanel.Dispose()

, я удаляю все GroupBox компоненты, которые были созданы, и в userControl, если я делаю:

GroupBox.Dispose();

Он удаляет его, но когда я добавляю еще один, он попадает под «Тот, который был удален»

Вот код, который я использую:

UserControl:

private void Remove_Click(object sender, EventArgs e)
{
   removeFunction();
} 

Форма 1:

Private void add_GroupBox(my class)
{
   myclass myClass = new myclass(datasource, null);
   flowLayoutPanel.Controls.add(myClass);
}


private void Remove_GroupBox()
{
   flowLayoutPanel.Controls.Clear(); // I know it removes all the groups created
   FlowLayoutPanel.Dispose(); // It does the same job

   // I just want the get the selected groupBox and dispose it or clear it
}

1 Ответ

0 голосов
/ 19 апреля 2019

У вас есть два варианта:

Первый вариант

Вы можете добавить кнопку к вашему User Control, чтобы избавиться от нее.

this.Dispose();


Второй вариант

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

Form1:

public Control SelectedItem { get; set; } = null;

private void DeleteButton_Click(object sender, EventArgs e)
{
    if (SelectedItem != null)
    {
        SelectedItem.Dispose();
    }
}

UserControl1:

// You can use any Event you prefer (Enter, Click or etc.).
private void GroupBox1_Enter(object sender, EventArgs e)
{
   // First Parent is FlowLayoutPanel
   // Second Parent is your Form
   Form1 parent = this.Parent.Parent as Form1;
   if (parent != null)
   {
      parent.SelectedItem = this;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...