在窗体之间传递组合框值

本文关键字:组合 窗体 之间 | 更新日期: 2023-09-27 17:56:00

相当简单的问题我知道这很简单,我做错了,但我需要另一双眼睛来帮助我。我有 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;
        }
    }

在窗体之间传递组合框值

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

表单 1

中的示例 1:(表单 2 是表单 1 的成员)

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

顺便说一句,您还可以使用表单的事件,以不同的形式,它本身不必以事件发起的形式发生。

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

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

将值从 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.
     }
}