当前位置: 代码迷 >> C# >> 单击lable时产生
  详细解决方案

单击lable时产生

热度:394   发布时间:2016-05-05 05:30:38.0
单击lable时发生
就是我单击的时候写的是label1.BackColor = Color.Red变成红色  现在我要单击另一个lable2 要他的颜色变成红色 lable1的颜色恢复原来的颜色要怎么写?以此类推 我还4,5个lable要实现这种功能怎么写啊
------解决思路----------------------
假设你有5个label,分别叫label1~5
将它们的Click都关联给同一个事件处理函数:
void label_Click(object sender, EventArgs e)
{
    for (int i = 1; i <= 5; i++)
    {
        if (Controls["label" + .ToString()] != sender)
        {
            Controls["label" + .ToString()] as Label).Backolor = Color.Black;
        }
        else
        {
            Controls["label" + .ToString()] as Label).Backolor = Color.Red;
        }
    }
}
------解决思路----------------------
其实你这个问题的关键在于如何保存原来的颜色并恢复而已。


Dictionary<Label, Color> labelDict = new Dictionary<Label, Color>();
// 为所有你想要这种行为的Label绑定下面的Click事件
private void label1_Click(object sender, EventArgs e)
{
    foreach (KeyValuePair<Label, Color> pair in labelDict) {
        pair.Key.BackColor = pair.Value;
    }
    labelDict.Clear();
    Label label = sender as Label;
    labelDict.Add(label, label.BackColor);
    label.BackColor = Color.Red;
}