0

我最近开始学习 c#,我从制作一个简单的井字游戏开始,使用标签和表单。

当我点击一个标签时,我希望它改变背景颜色和前景色。

这是我的代码;

        public void LabelClick(Label lbl, int i)
    {
        if (strCurrPlayer == strPlayer1)
        {
            liP1Squares.Add(i);
            lbl.BackColor = System.Drawing.Color.Black;
            lbl.ForeColor = System.Drawing.Color.White;
            lbl.Text = "X";
        }
        else
        {
            //Player2
            liP2Squares.Add(i);
            lbl.BackColor = System.Drawing.Color.White;
            lbl.ForeColor = System.Drawing.Color.Black;
            lbl.Text = "O";
        }
        lbl.Enabled = false;
        SwapPlayer();
    }

但是,当它被调用时,它会正确设置背景颜色,但前景色(即文本)从红色(默认)更改为玩家 1 的黑色而不是白色,以及玩家 2 的浅灰色,而不是黑色。

我想知道标签或表单中是否有任何字段在更改背景颜色时默认更改文本颜色。如果不是,还有什么可以做出这种改变?

任何帮助,将不胜感激。

4

2 回答 2

1

在标签上设置项目后,您将通过以下方式禁用它

lbl.Enabled = false;

然后,这会导致标签使用 Windows 中的禁用主题。

为了改变这种行为,你应该转向使用事件而不是直接方法。

每个标签都提供了一个Click-event,您可以在单击标签后使用该事件来调用方法。
然后,您可以从中删除事件处理程序,Label.Click而无需禁用它。

参见MSDN了解Control.Click-EventHandler

于 2013-08-15T08:18:38.973 回答
1

删除lbl.Enabled = false;以查看更改

禁用控制后,它会将标签背景颜色设置为SystemColors.Control,前景色设置为SystemColors.GrayText

于 2013-08-15T08:18:18.297 回答