我使用对象列表作为我的应用程序的输入,并且列表中对象的数量发生更改。对于列表中的每个对象我动态创建小组,并将它们添加到其他面板选择/取消选择,更改动态创建的多个面板的颜色
private void addPanel(string name, int positionFromLeft, Panel mainPanel)
{
Panel panel = new System.Windows.Forms.Panel();
panel.Name = name;
panel.Location = new System.Drawing.Point(50 + positionFromLeft, 160);
panel.BackColor = System.Drawing.Color.SteelBlue;
panel.Size = new System.Drawing.Size(120, 40);
panel.Click += new EventHandler(this.pClick);
mainPanel.Controls.Add(panel);
}
的控制,以每屏我添加了一个单击事件处理程序而改变面板的颜色:
private void pClick(object sender, EventArgs e)
{
Panel panel= (sender as Panel);
panel.BackColor = Color.Green;
}
第二次点击时,如何将每个面板的颜色更改为不同的颜色(红色等)?再次点击时将其改回(绿色等)。基本上,每次点击都会将面板的颜色从绿色更改为红色,反之亦然。它必须与每个面板配合使用,以便在运行时可以将10个面板的颜色更改为绿色,将10个面板更改为红色,反之亦然。
不是所有的人,只有被点击的人。前后改变颜色。基本上我需要捕获动态创建的每个面板的当前点击状态。 – 01egi4
然后新的解决方案是正确的。您可以在当前的'BackColor'和想要设置的新'BackColor'之间切换。 – jorgonor
此解决方案不起作用,因为初始颜色不是绿色,而是SteelBlue。 – 01egi4