2016-11-11 48 views
0

我使用對象列表作爲我的應用程序的輸入,並且列表中對象的數量發生更改。對於列表中的每個對象我動態創建小組,並將它們添加到其他面板選擇/取消選擇,更改動態創建的多個面板的顏色

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個面板更改爲紅色,反之亦然。

回答

-1

我找到了一個解決方案,非常感謝。

private void pClick(object sender, EventArgs e) 
{ 
    Panel panel = (sender as Panel); 
    if (panel.BackColor == Color.SteelBlue) 
    { 
     panel.BackColor = Color.Green; 
    } 
    else if (panel.BackColor == Color.Green) 
    { 
     panel.BackColor = Color.Red; 
    } 
    else if (panel.BackColor == Color.Red) 
    { 
     panel.BackColor = Color.Green; 
    } 
} 
0

如果我說得對,你想切換點擊面板。

private void pClick(object sender, EventArgs e) 
{ 
    Panel panel = (sender as Panel); 
    if (panel.BackColor == Color.Green) { 
     panel.BackColor = Color.Red; 
    } else if (panel.BackColor == Color.Red) { 
     panel.BackColor = Color.Green; 
    } 
} 
+0

不是所有的人,只有被點擊的人。前後改變顏色。基本上我需要捕獲動態創建的每個面板的當前點擊狀態。 – 01egi4

+0

然後新的解決方案是正確的。您可以在當前的'BackColor'和想要設置的新'BackColor'之間切換。 – jorgonor

+0

此解決方案不起作用,因爲初始顏色不是綠色,而是SteelBlue。 – 01egi4