使用第二种形式的代码将项添加到组合框中

时间:2016-08-11 12:33:51

标签: c# winforms combobox

我的问题非常简单:我在form1中有一个组合框,我有一个打开form2的按钮,可以在文本框中写入要添加的新项目。这是我的代码: Form1中:

public static string new_item;
private void btn1_Click(object sender, EventArgs e)
    {

        Form2 f2= new Form2();
        f2.ShowDialog();
    }

窗体2:

private void btn1_Click(object sender, EventArgs e)
    {
        Form1.new_item = textBox1.Text;
        combobox.Items.Add(new_item);
        this.Close();
    }

但新项目未添加到我的comobobox中。 我尝试刷新组合框,但我有相同的结果。 谢谢。

2 个答案:

答案 0 :(得分:3)

关闭ComboBox后,您需要将该项目添加到Form2

public static string new_item;
private void btn1_Click(object sender, EventArgs e)
{
    Form2 f2= new Form2();
    f2.ShowDialog();
    comboBox1.Items.Add(new_item);  //this is missing in your code
}

但更好的方法是在Form2中创建一个公共属性来传回字符串:

public string Value { get; set; }

private void btn1_Click(object sender, EventArgs e)
{
    this.Value = textBox1.Text; //pass the TextBox value to the property
    this.DialogResult = DialogResult.OK; // Cancel would mean you closed/canceled the 
                                         // form without pressing OK-Button (btn1)
    this.Close();
}

在Form1中,您可以访问该属性并添加新项目:

private void btn1_Click(object sender, EventArgs e)
{
    Form2 f2= new Form2();
    if(f2.ShowDialog() == DialogResult.OK) //check the result
    {
        comboBox1.Items.Add(f2.Value);//Add the new item
    }
}

答案 1 :(得分:1)

假设组合名称为combobox

Form1中:

private void btn1_Click(object sender, EventArgs e)
{

    Form2 f2= new Form2();
    if (f2.ShowDialog() == DialogResult.OK)
       combobox.Items.Add(f2.ItemValue);
}

窗体2:

public string ItemValue {get {return textBox1.Text;} };

private void btn1_Click(object sender, EventArgs e)
    {
        Form1.new_item = textBox1.Text;
        this.DialogResult = DialogResult.OK;
    }