如何获取按钮的背景颜色并将其发送到其他形式?

时间:2018-05-03 14:09:14

标签: c# winforms

我有一个包含2个表单的项目,第一个表单是空的。第二种形式有5个按钮。

当我按下按钮时,它会打开一个颜色对话框。我正在选择一种颜色,按钮的背景颜色正在改变。例如,如果button1的背景颜色ID为Green,则form1的背景颜色应为绿色。不是即时的,而是当我按保存按钮时。我需要将按钮的背景颜色变为变量。我怎么能这样做?

private void btnKAMU_Click(object sender, EventArgs e)
{
    colorDialog1.ShowDialog();
    btnKAMU.BackColor = colorDialog1.Color;
}

1 个答案:

答案 0 :(得分:2)

您可以使用自定义属性或使用Form1构造函数,将Form2的引用传递给Form2设置Form2 Owner。 / p>

当您在Form1中创建Form2的实例时

使用then Owner属性
Form2 Owner在您以这种方式实例化表单时设置:
form2.Show(this);this引用为Form2 Owner - Form1此处。)

Form2 form2 = new Form2();
form2.Show(this);
//form2.ShowDialog(this);

Form2中,设置Owner BackColor属性:

private void btnSAVE_Click(object sender, EventArgs e)
{
    this.Owner.BackColor = btnKAMU.BackColor;
}

<小时/> 使用自定义属性

Form2 form2 = new Form2();
form2.Form1Reference = this;
form2.Show();
//form2.ShowDialog();

Form2中,使用属性值:

public Form Form1Reference { get; set; }

private void btnSAVE_Click(object sender, EventArgs e)
{
    this.Form1Reference.BackColor = btnKAMU.BackColor;
}

<小时/> Form1构造函数中设置 Form2 的引用:

Form2 form2 = new Form2(this);
form2.Show();
//form2.ShowDialog();

使用以前的属性值:

private Form Form1Reference { get; set; }

public Form2(Form Form1Instance)
{
    this.Form1Reference = Form1Instance;
    InitializeComponent();
}

private void btnSAVE_Click(object sender, EventArgs e)
{
    this.Form1Reference.BackColor = btnKAMU.BackColor;
}

或将Form1引用分配给私有字段:

private Form Form1Reference;

public Form2(Form Form1Instance)
{
    this.Form1Reference = Form1Instance;
    InitializeComponent();
}

private void btnSAVE_Click(object sender, EventArgs e)
{
    this.Form1Reference.BackColor = btnKAMU.BackColor;
}

根据您的具体情况,可能需要将所选颜色分配给私人字段并使用其值更改Form1.BackColor

private Color Form1BackColor;

private void btnKAMU_Click(object sender, EventArgs e)
{
    colorDialog1.ShowDialog();
    btnKAMU.BackColor = colorDialog1.Color;
    this.Form1BackColor = btnKAMU.BackColor;
}

如果需要,请使用此值更改以前的代码。