C#从另一个表单访问表单的组合框项目

时间:2012-05-21 03:45:21

标签: c# forms combobox

我有两种形式:form1和form 2. comboBox在form2中。我试图将一个项添加到form1的组合框选项列表中。这是我到目前为止所尝试过的。

form1:          
var form2 = new Form2();                   
if (variable == "value") {           
  form2.Controls["ComboBox1"].Items.Add("another item")          
}

this.Hide();          
form2.Show; 

这个问题是它不允许我选择项目。 (它不允许我输入.Items.Add)


我还尝试通过在表单中​​单击它并将私有更改为public来使comboBox公开。这就是我改变它时的样子。

public void comboBox1_SelectedIndexChanged(object sender, EventArgs e){
}

但是当我尝试访问comboBox1时,我得到的就是:

comboBox1_SelectedIndexChanged

form2.comboBox1    //This doesn't work            
form2.comboBox1_SelectedIndexChanged   //This is the only option available 

我可能犯了很多错误,但这是因为我对此不熟悉。我刚刚开始学习,如果你可以请尝试解释一下这会有所帮助。如果可能,请避免使用get {} set {}内容。并且请向我解释如何将按钮和其他东西以不同的形式公开,因为我知道点击它并将私有更改为公共是不正确的方式,就像我在上面的示例中所做的那样。

3 个答案:

答案 0 :(得分:3)

转到可视UI设计器并在属性中查找修改器并将其更改为Public: enter image description here

现在您需要对代码进行一些小改动:

var form2 = new Form2();                   
if (variable == "value") {           
 form2.ComboBox1.Items.Add("another item");      
}

this.Hide();          
form2.Show; 

答案 1 :(得分:1)

您应该在Form2上编写一个公共方法,将项目添加到组合框中。

public class Form2 : Form {
    ...

    public void AddItem(object item) {
       comboBox1.Items.Add(item);
    }

    ...
}

这样,你只需在Form1上调用该方法。

form2.AddItem(variable);

答案 2 :(得分:0)

最好使用事件处理程序来执行此操作,在调用此事件处理程序时,使用相应的方法在表单1中注册事件处理程序。然后在form2中调用此事件处理程序。该方法将负责将项目添加到组合框。