如何为Windows窗体颜色属性设置变量颜色

时间:2016-11-10 13:30:24

标签: c# winforms

我是初学者,我认为解决方案非常简单,但我无法在互联网上找到它。

我正在寻找一种将表单和控件的背面颜色设置为某个颜色变量的方法,因此如果我将其值更改为绿色,则其背景颜色设置为mainColor的每个控件都将变为绿色并且更改将显示在设计器中。

public class MainForm:Form
{
    public static Color mainColor=[some color];
    public static Color secColor=[some color];
    public Main()
    {
        InitializeComponent();
        BackColor=mainColor;
        control1.BackColor=secColor;
        control2.BackColor=secColor;
        control3.BackColor=secColor;
    }
}

通过更改mainColor和secColor来实现。控件已更改,但它不会出现在设计器中。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

使用Colors类。

public static Color redColor = Colors.Red;
public static Color greenColor = Colors.Green;
public static Color blueColor = Colors.Blue;
public static Color whiteColor = Colors.White;

以下是可用颜色的托盘:

enter image description here

如果要创建新颜色,请使用Color.FromArgb();

有关新颜色的更多信息,请查看this answer

答案 1 :(得分:1)

是的,这就是所谓的DataBinding,它部分由Designer完成,部分由代码完成。

而不是声明

public static Color mainColor=[some color];

将其声明为属性:

    public Color MyColor
    {
        get
        {
            return myColor;
        }
        set
        {
            myColor = value;
        }
    }

在主窗体中,编辑要受此变量影响的每个控件,以将其颜色属性绑定到该控件。我将使用Panel作为示例控件,因此将一些Panel对象添加到表单中。然后在每个Panel对象的“属性”面板中,单击 DataBindings 旁边的+,然后单击(高级)旁边的空白框。单击省略号(...)并选择 BackColor 属性。然后,在绑定下拉列表中,选择添加项目数据源。在下一个对话框中选择对象,然后导航到您的表单,然后选择该表单。然后,格式化和高级绑定对话框中将显示属性列表,您可以选择属性 MyColor

请注意,为第一个数据源创建此数据源后,您无需为每个Panel重新创建它 - 只需引用您已创建的数据源。

然后,您可以通过更改程序中MyColor属性的值来更改执行此数据绑定的任何控件的BackColor。他们将一起改变。

您可能还需要安排该属性来广播已更改的消息,因此请将此行添加到set()方法中。

form1BindingSource.ResetBindings(false);

这样set方法看起来像这样。

set
{
    myColor = value;
    form1BindingSource.ResetBindings(false);
}

告诉绑定源对象通知所有订阅者自己更新,并且每次更改MyColor属性时都会自动发生。