2014-09-11 112 views
0

我有一个Form1 with MenuItem'Customize'。点击定制后,我打开“Form2”。在Form2上,用户从ColorDialog中选择两种颜色。 Form2有'应用'按钮。我想单击“应用”按钮,Form2应该关闭(或隐藏),所选颜色应作为Form1的背景颜色应用(绘制)。我该怎么做呢?如何将选定的颜色从form2发送到form1

回答

0

在表格2,你需要有一个你可以访问检索颜色

public Color FirstColor {get; private set;} 
public Color SecondColor {get; private set;} 

然后打开这个表,您应该遵循以下使用的东西两个属性。

using(var myForm = new Form2()) 
{ 
    myForm.ShowDialog(); 
    //if(myForm.ShowDialog() == DialogResult.OK) 
     this.BackColor = myForm.FirstColor; 
} 

的注释行是如果你有一个确定/取消您的对话框上的按钮,你可以介绍的,而不是它上面的线可选的事。要关闭表,您应该设置形式DialogResult适当

+0

谢谢!这工作! – jrk007 2014-09-11 06:55:25

1

您做出公开法“selectcolor()”在Form1,关闭所有形式,打开一个新的Form1并使用selectcolor()来挑颜色

+0

我不想选择颜色在form1中。我想在form2中选择颜色并将其应用于form1。 – jrk007 2014-09-11 06:41:32

0

当您单击该按钮以打开的形式2做像这样:

Form2 f = new Form2(); 
f.ShowDialog(); 
var returnedColor = f.SelectedColor; 

这将interupt在Form1的代码,所以你不能进行更改,并从形式返回值。

public class Form2{ 
    public string SelectedColor = "Test"; 
} 

这应该有效。

+0

这里是一个快速搜索你的答案:http://stackoverflow.com/questions/5233502/c-sharp-return-value-from-form – 2014-09-11 06:44:54

0

你可以使用这样的静态变量: 在Form1中:

Public Static Color SelectedColor; 
Form1 f1 = new Form1(); 
f1.ShowDialog(); 
this.BackColor = SelectedColor; 

在窗体2:

if(ColoeDialog1.ShowDialog()==DialogResault.OK) 
{ 
Form1.SelectedColor = ColoeDialog1.SelectedColor; 
} 
相关问题