从C#中的另一个表单获取comboBox值

时间:2015-05-31 08:25:52

标签: c# forms combobox

我有两个表单,在Form1中有一个按钮,它将显示Form2。在Form2中我有一个comboBox。从comboBox中选择一个项目后,用户可以单击Button将一个comboBox值发送到Form1,Form2将关闭。

这是我的代码:

Form1中:

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

窗体2:

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上

5 个答案:

答案 0 :(得分:2)

您正尝试在新表单的组合框中设置一个值,因为您在此处创建了它:

Form1 frm1 = new Form1();

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

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

var form2 = new Form2(this);

然后引用成员字段。

答案 1 :(得分:0)

您应该将此对象的引用发送到新表单。

Form1中:

            import json
            import urllib.request, urllib.error, urllib.parse

            remoteURL = "http://192.168.0.29/" + "?id=" + id
            json_obj = urllib.request.urlopen(remoteURL)


            try:
                with urllib.request.urlopen(remoteURL) as response:
                    if response.read(1):
                        string = json_obj.read().decode('utf-8')
                        json_obj = json.loads(string)
                        responseName = json_obj['Name']
                        print(responseName)
                    else:
                        print("Error")
            except:
                print("URL Failed")

窗体2:

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

答案 2 :(得分:0)

在按钮点击事件中尝试此操作:

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

答案 3 :(得分:0)

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

表格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(); 
}

答案 4 :(得分:0)

试试这段代码。

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();
    }