Пример
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Control control;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
main_panel.Controls.Add(new SecondPanel(control, 300, 100));
main_panel.Controls.Add(new SecondPanel(control, 300, 200));
main_panel.Controls.Add(new SecondPanel(control, 300, 300));
}
}
}
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
class SecondPanel : Panel
{
private Control control;
public SecondPanel(Control control, int x, int y) {
this.Location = new Point(x, y);
this.control = control;
this.Click += new EventHandler(click);
this.BackColor = Color.Blue;
this.Size = new Size(50, 50);
}
private void click(object sender, EventArgs e) {
this.BackColor = Color.Red;
if(control != null) {
control.BackColor = Color.Blue;
control = this;
}
}
}
}
В результате если кликать все закрашивается красным а мне нужно чтобы предыдущая панель обратно ставала синей
Вам нужен отдельный объект со ссылкой на последнюю кликнутую панель.
namespace WindowsFormsApp1
{
class SecondPanelHolder
{
SecondPanel panel;
}
class SecondPanel : Panel
{
public SecondPanelHolder Holder { get; set; }
public SecondPanel(SecondPanel holder, int x, int y) {
this.Location = new Point(x, y);
this.Holder = holder;
this.Click += new EventHandler(click);
this.BackColor = Color.Blue;
this.Size = new Size(50, 50);
}
private void click(object sender, EventArgs e) {
if (Holder != null) {
if (Holder.panel != null)
Holder.panel.BackColor = Color.Blue;
Holder.panel = this;
}
this.BackColor = Color.Red;
}
}
}
Дадим этот объект всем панелям.
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
SecondPanelHolder holder = new SecondPanelHolder();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
main_panel.Controls.Add(new SecondPanel(holder, 300, 100));
main_panel.Controls.Add(new SecondPanel(holder, 300, 200));
main_panel.Controls.Add(new SecondPanel(holder, 300, 300));
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код который создает разметку клавиатуры в два рядаЧто-то такое:
При установке новых программ, при нажатии правой кнопки мыши и выборе в меню создать можно выбрать создаваемый файл этой программой
У меня есть лаунчер для игры (скачивает саму игру и запускает её с параметрами)Я хочу что-бы при обновлении лаунчер докачивал обновление,...
Добрый день, прошу совета с грамотным использованием событии в приложенияхУ меня был проект клиент-сервер на сокетах