OriginalGriff
Чтобы удалить его, вы должны сначала удалить его из коллекции элементов управления!
Это сложно с вашим существующим кодом, потому что если это не единственная кнопка в вашей форме (а это не так), вам будет трудно определить, какую кнопку Удалить!
Попробовать это:
public Form1()
{
InitializeComponent();
}
private List<Button> buttons = new List<Button>();
private void button1_Click(object sender, EventArgs e)
{
Button b = new Button();
b.Text = "button2";
Controls.Add(b);
buttons.Add(b);
b.Click += Hello;
}
private void RemoveButtons()
{
foreach (Button b in buttons)
{
Controls.Remove(b);
b.Click -= Hello;
}
buttons.Clear();
}
private void Hello(object sender, EventArgs e)
{
MessageBox.Show("hello World");
}
OriginalGriff
Да.
Первый удаляет обработчик событий, так что сборщик мусора может утилизировать элемент управления, если это необходимо. Строго говоря, вам это не нужно для небольших тестовых приложений, но это хорошая идея использовать хорошие практики даже для небольших проектов - так вы не забудете и не попадетесь с большими!
Второй удаляет кнопки из списка, так что если вы снова вызовете метод RemoveButtons, вы не будете пытаться удалить кнопки, с которыми уже имели дело.