繁体   English   中英

在表单之间传递组合框值

[英]passing combobox values between forms

非常简单的问题,我知道这很简单,我做错了,但是我需要另一只眼睛来帮助我。 我有2个表单/类,我想将combobox.selectedtext从form传递到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;

        }
    }

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

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

您只需要传递要从另一个表单调用的不同表单的引用。 或者,根据应用程序的工作方式,保留您创建的表单的引用。 这样,您可以根据依赖关系的实际情况在任何方向调用。

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种形式,您需要绘制图纸并草绘每种形式如何依赖其他形式。 然后,创建反映此绘图的代码。

顺便说一句,您还可以使用某种形式的事件,以另一种形式,它本身不必在事件起源的形式中发生。

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

形式1:

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.
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM