在表单之间传递组合框值

时间:2015-06-12 20:28:47

标签: c# winforms

相当简单的问题我知道它的一些简单我做错了但我需要另一组眼睛来帮助我。我有2个表单/类,我想将表单中的combobox.selectedtext传递给form2中的字符串。

public partial class Form1
{
     public Form1()
     {
         InitializeComponent();
     }
private void cboBox2_EditValueChanged_1(object sender, EventArgs e)
    {
        string cat = cboBox1.SelectedText;
        Form2 fm2 = new Form2();
        fm2.frm2string = cat;

    }
}
    public partial class Form2
{
     public Form2()
     {
         InitializeComponent();
     }
public string frm2string
     {
          get;
          set;
     }
private void simpleButton1_Click(object sender, EventArgs e)
        {
            textEdit1.Text = frm2string;
        }
}

表格3与表格1同时初始化。

 public partial class Form3
        {
             public Form3()
             {
                 InitializeComponent();
             }
        private void simpleButton1_Click(object sender, EventArgs e)
                {
        Form2 frm = new Form2();
                    frm.Show();
                }
        }

Form0加载Form1和Form3

 public partial class Form0
    {
         public Form0()
         {
             InitializeComponent();
         }


   private void Form0_Load(object sender, EventArgs e)
        {
                form1 = new Form1();
                form1.TopLevel = false;
                tabdrives.Controls.Add(form1);
                form1.Show();
                form1.Dock = DockStyle.Fill;
                form3 = new Form3();
                form3.TopLevel = false;
                tabdrives.Controls.Add(form3);
                form3.Show();
                form3.Dock = DockStyle.Fill;

        }
    }

3 个答案:

答案 0 :(得分:0)

另一种非理想的解决方案可能是将frm2string更改为public static Form2Page_Load(或可能更早)设置的变量。

公共静态变量是不理想的,因为它们充当全局变量。

答案 1 :(得分:0)

您只需要传递要从其他表单调用的不同表单中的引用。或者,根据应用程序的工作方式,您可以保留对所创建表单的引用。这样你就可以根据依赖的真实程度来调用任何方向。

form1中的示例1 :( form2是form1的成员)

class Form1{

    private Form2 form2;

    void someMethod(){
         form2 = new Form2();
    }

    void someOtherMethod(){
         if (form2!=null) form2.doSomething();
    }
}

示例2:

class Form1{

    void someMethod(){
         form2 = new Form2(this);
    }
}    

class Form2{
    private Form1 form1;

    public Form2(Form1 form1){
         this.form1 = form1;
    }

    void someOtherMethodAgain(){
         form1.doSomething();
    }
}

这段代码只专注于将表单的引用传递给彼此,它远非完整。 根据情况,您需要示例1,示例2或两者的组合,甚至是完全不同的东西。但不知何故,你需要知道依赖关系并将它们传递给正确的形式。

例如,当您创建form3时,您可以轻松传递form1。但是你已经有了4种形式,你需要制作一个绘图并勾勒出每种形式如何依赖于其他形式。然后创建反映此图形的代码。

顺便说一下,您还可以使用不同形式的表单事件,而这些事件本身不必以事件发生的形式发生。

答案 2 :(得分:0)

将值从form1传递给form2构造函数,如下所示。

Form1中:

public partial class Form1
{
     public Form1()
     {
         InitializeComponent();
     }

     private void simpleButton1_Click(object sender, EventArgs e)
     {
        form2 f2 = new form2(cboBox1.SelectedText);
     }
}

窗口2:

public partial class Form2
{
     string ComboBoxSelectTexForm1;

     public Form2(string value)
     {
         InitializeComponent();

         ComboBoxSelectTexForm1 = value; //now you can assign this value anywhere you want.
     }
}