【发布时间】:2014-09-11 15:28:10
【问题描述】:
我有一个带有 MenuItem 'Customize' 的 Form1。单击自定义时,我打开“Form2”。在 Form2 上,用户从 ColorDialog 中选择两种颜色。 Form2 有“应用”按钮。我想单击“应用”按钮,Form2 应该关闭(或隐藏)并且应该应用(绘制)所选颜色作为 Form1 的背景颜色。我该怎么做?
【问题讨论】:
我有一个带有 MenuItem 'Customize' 的 Form1。单击自定义时,我打开“Form2”。在 Form2 上,用户从 ColorDialog 中选择两种颜色。 Form2 有“应用”按钮。我想单击“应用”按钮,Form2 应该关闭(或隐藏)并且应该应用(绘制)所选颜色作为 Form1 的背景颜色。我该怎么做?
【问题讨论】:
你在form1中创建了一个公共方法“selectcolor()”,关闭所有表单,打开一个新的form1并使用selectcolor()来选择颜色
【讨论】:
在表格 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
【讨论】:
当您单击按钮打开表单 2 时,请执行以下操作:
Form2 f = new Form2();
f.ShowDialog();
var returnedColor = f.SelectedColor;
这将中断 form1 中的代码,因此您无法在此处进行更改,并且您从表单返回值。
public class Form2{
public string SelectedColor = "Test";
}
这应该可行。
【讨论】:
你可以像这样使用静态变量: 在 Form1 中:
Public Static Color SelectedColor;
Form1 f1 = new Form1();
f1.ShowDialog();
this.BackColor = SelectedColor;
在Form2中:
if(ColoeDialog1.ShowDialog()==DialogResault.OK)
{
Form1.SelectedColor = ColoeDialog1.SelectedColor;
}
【讨论】: