Смена цвета кнопки №1 по нажатию кнопки №2 в другой форме

Есть две формы .cs. В каждой есть кнопка. В Form1.cs есть кнопка button_1, в 2.cs button_2

Код 1.cs:

namespace fn
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void loadform(object Form)
        {
            if (this.mainpanel.Controls.Count > 0)
                this.mainpanel.Controls.RemoveAt(0);
            Form f = Form as Form;
            f.TopLevel = false;
            f.Dock = DockStyle.Fill;
            this.mainpanel.Controls.Add(f);
            this.mainpanel.Tag = f;
            f.Show();
        }

        private void btn_switch_Click(object sender, EventArgs e)
        {
            loadform(new _2());
        }
    }
}

Код 2.cs:

namespace fn
{
    public partial class _2 : Form
    {
        public _2()
        {
            InitializeComponent();
        }

        private void button_1_Click(object sender, EventArgs e)
        {
            button_1.BackColor = Color.Green;
            button_2.BackColor = button_1.BackColor;    
        }
    }
}

введите сюда описание изображения

Задача состоит в том, что мне нужно чтобы при нажатии кнопки button_1 в форме 2.cs, кнопка button_2 в форме Form1.cs меняла цвет на такой же

Буду очень благодарен за помощь


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

Автор решения: aepot

Где-то уже был такой же вопрос и ответ на него, потому что проблема тривиальная. Но сходу не нашел, поэтому покажу. Вам стоит поизучать основы ООП, тогда текущая задача станет лёгкой.

Делаем публичный метод, меняющий цвет кнопки в первой форме

public void SetButtonColor(Color color)
{
    button_1.BackColor = color;
}

Передаем ссылку на первую форму в конструктор второй формы

private void btn_switch_Click(object sender, EventArgs e)
{
    loadform(new _2(this));
}

Принимаем ссылку в конструкторе

private Form form1;

public Form1(Form form)
{
    InitializeComponent();
    form1 = form;
}

Теперь просто можно вызвать тот самый метод

private void button_1_Click(object sender, EventArgs e)
{
    button_2.BackColor = Color.Green;
    form1.SetButtonColor(button_2.BackColor);
}

Готово, если я правильно понял задачу.

Вы не заметили один нюанс, у вас button_1 есть в обеих формах. Разберитесь с этим.

→ Ссылка