Смена цвета кнопки №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 шт):
Где-то уже был такой же вопрос и ответ на него, потому что проблема тривиальная. Но сходу не нашел, поэтому покажу. Вам стоит поизучать основы ООП, тогда текущая задача станет лёгкой.
Делаем публичный метод, меняющий цвет кнопки в первой форме
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 есть в обеих формах. Разберитесь с этим.
