标签前景冲突

本文关键字:冲突 标签 | 更新日期: 2023-09-27 18:27:50

我最近开始学习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();
    }

然而,当它被调用时,它正确地设置了背景颜色,但放弃的rund,即文本,从红色(默认)变为玩家1的黑色,而不是白色,从浅灰色变为玩家2的黑色。

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

如有任何帮助,我们将不胜感激。

标签前景冲突

在标签上设置项目后,将禁用它

lbl.Enabled = false;

这将导致标签使用Windows中禁用的主题。

为了更改此行为,您应该转而使用事件,而不是直接方法。

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

请参阅MSDN了解Control.Click-事件处理程序

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

在您取消控制后,它将标签背景色设置为SystemColors.Control,前景色设置为SystemColors.GrayText