从c#中的另一种形式获取comboBox值

本文关键字:获取 comboBox 另一种 | 更新日期: 2023-09-27 17:51:12

我有2个表单,在Form1中有一个按钮将显示Form2。在Form2中我有一个组合框。从comboBox中选择一个项目后,用户可以点击Button将comboBox的值发送给Form1, Form2将关闭。

下面是我的代码:

Form1:

private void Button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();
}

Form2:

private void Button1_Click(object sender, EventArgs e)
{
    Form1 frm1 = new Form1();
    frm1.textBox1.Text = Convert.ToString(comboBox1.SelectedValue);
    this.DialogResult = DialogResult.OK;
}

但是如果comboBox值没有出现在Form1 saas的textBox

从c#中的另一种形式获取comboBox值

您试图在新表单的组合框中设置一个值,因为您在这里创建了它:

Form1 frm1 = new Form1();

你应该把对Form1实例的引用传递给Form2(通过构造函数或成员字段)。

正确的方法是在Form2类中添加Form1类型的私有成员字段,在Form2构造函数中添加参数,并在调用构造函数时初始化它:

var form2 = new Form2(this);

你应该把这个对象的引用发送给new Form。

Form1:

private void Button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2(this);
    frm2.ShowDialog();
}

Form2:

Form _parentForm;
public Form2(Form frm)
{
     _parentForm = frm;
}
private void Button1_Click(object sender, EventArgs e)
{
    _parentForm.textBox1.Text = Convert.ToString(comboBox1.SelectedValue);
    this.DialogResult = DialogResult.OK;
}

在你的按钮点击事件上试试:

TextBox txt = (Form1)this.Owner.Textbox1;
txt.Text = combobox1.Text;
this.Close();

试试这段代码。

Form1:

    public void SetValue(string str)
    {
        textBox1.Text = str;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2(this);
        frm2.Show();
    }

Form2:

readonly Form1 _ownerForm;

    public Form2(Form1 ownerForm)
    {
        InitializeComponent();
        this._ownerForm = ownerForm;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        string selectedText = comboBox1.SelectedItem.ToString();
        this._ownerForm.SetValue(selectedText);
        this.Close();
    }

您可以在文本框中设置修饰符属性。这个属性应该是公共的。

表格2:'

public Form2()`
{
  InitializeComponent(); 
}
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
  Form1 frm = (Form1)Application.OpenForms["Form1"];
  frm.textBox1.Text = comboBox1.Text; this.Close(); 
}