禁用颜色对话框中的颜色

时间:2016-12-06 10:32:57

标签: c# winforms colordialog

我希望允许用户使用ColorDialog为我的程序选择背景颜色,但由于我的标签文字为黑色,我想让用户无法从颜色对话框中选择黑色,以便颜色不会与我的标签文字颜色重叠。有什么方法可以做到吗?如果用户选择黑色,我也想过提出错误信息,如下所示,但是再次出现颜色对话框后,我选择的颜色不会成为我表格的BackColor

if (color.ShowDialog() == DialogResult.OK)
{
    if(color.Color == Color.Black)
    {
        MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        color.ShowDialog();
    }
    else
    {
        BackColor = color.Color;
        backColor = color.Color;
    }
}

1 个答案:

答案 0 :(得分:0)

尝试使用while而不是在检查颜色时使用:

if (color.ShowDialog() == DialogResult.OK)
{
    while(color.Color == Color.Black)
    {
        MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        color.ShowDialog();
    }
    BackColor = color.Color;
    backColor = color.Color;
}

这样,除非您选择的颜色不是黑色,否则会显示错误消息并再次打开ColorDialog。 至于为什么在重新打开对话框后颜色不会改变,这是因为你只在else子句中改变背景颜色,因此如果你最初选择黑色,BackColor就不会改变。 解决问题的另一种方法是,如果所选颜色为黑色,则将标签的颜色更改为白色(当选择其他颜色时,不要忘记将标签文本更改回黑色。)