【问题标题】:How to send Selected color from form2 to form1如何将选定的颜色从form2发送到form1
【发布时间】:2014-09-11 15:28:10
【问题描述】:

我有一个带有 MenuItem 'Customize' 的 Form1。单击自定义时,我打开“Form2”。在 Form2 上,用户从 ColorDialog 中选择两种颜色。 Form2 有“应用”按钮。我想单击“应用”按钮,Form2 应该关闭(或隐藏)并且应该应用(绘制)所选颜色作为 Form1 的背景颜色。我该怎么做?

【问题讨论】:

    标签: c# winforms themes


    【解决方案1】:

    你在form1中创建了一个公共方法“selectcolor()”,关闭所有表单,打开一个新的form1并使用selectcolor()来选择颜色

    【讨论】:

    • 我不想在 form1 中选择颜色。我想在 form2 中选择颜色并将其应用到 f​​orm1。
    【解决方案2】:

    在表格 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

    【讨论】:

      【解决方案3】:

      当您单击按钮打开表单 2 时,请执行以下操作:

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

      这将中断 form1 中的代码,因此您无法在此处进行更改,并且您从表单返回值。

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

      这应该可行。

      【讨论】:

      【解决方案4】:

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

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

      在Form2中:

      if(ColoeDialog1.ShowDialog()==DialogResault.OK)
      {
      Form1.SelectedColor = ColoeDialog1.SelectedColor;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        • 2018-11-04
        • 1970-01-01
        相关资源
        最近更新 更多