Как избавиться от повторяемости кода в Window Forms, при добавлении одних и тех же элеметов с одинаковой логикой

Подскажите по WinForms. Например есть задача: вводим текст, нажимаем кнопку отправить, текст отображается в лейбл, и вместо кнопки отправить кнопка редактировать. По сути одна строка на странице приложения. Можно конечно просто накидать элементы на форму, добавив кучу повторяющегося кода, т.к. мне нужно примерно 10 аналогичных строк. А что если 20... А что если потом нужно будет изменить функцию кнопки, это придется лезть в каждый элемент - очень непрактично. Как бы выделить этот код в отдельный класс и просто добавлять при необходимости в форму, изменив лишь координаты всего элемента? Вот так я вижу свою строку с кнопкой:

public Form1()
{
    InitializeComponent();
    this.Load += form1_Load;
}

private void form1_Load(object sender, EventArgs e)
{
    label1.Hide();
    button2.Hide();
}

private void button1_Click(object sender, EventArgs e)
{
    label1.Show();
    button2.Show();
    textBox1.Hide();
    button1.Hide();
}

public void button2_Click(object sender, EventArgs e)
{
    label1.Hide();
    button2.Hide();
    textBox1.Show();
    button1.Show();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    label1.Text = textBox1.Text;
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Написать метод который будет это делать.

public Form1()
{
    InitializeComponent();
    this.Load += form1_Load;
}

private void form1_Load(object sender, EventArgs e)
{
    updateConstrolState(this);
}

private void button1_Click(object sender, EventArgs e)
{
    updateConstrolState(sender);
}

public void button2_Click(object sender, EventArgs e)
{
    updateConstrolState(sender);
}

private updateConstrolState(object sender) {

  ... // perform common tasks

  if (sender.Name == "button1") {
     ....
  }
}
→ Ссылка