【问题标题】:C# Access a form's comboBox items from another formC# 从另一个表单访问表单的组合框项目
【发布时间】:2012-05-21 03:45:20
【问题描述】:

我有两种形式: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 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{} 事情。请向我解释如何以不同的形式公开按钮和其他内容,因为我知道单击它并将私有更改为公开并不是我在上面示例中所做的正确方法。

【问题讨论】:

  • 这是作业吗?我发誓我两天前在 VB.Net 中看到了同样的问题……我什至记得我要回答建议对两个组合框使用相同的 SelectedIndexChanged 事件。它实际上与@TuTran 的答案相同,除了在两个表单构造函数上,您将为两个 ComboBoxes SelectedIndexChange 事件分配单个 EventHandler...

标签: c# forms combobox


【解决方案1】:

转到可视化 UI 设计器并在属性中找到修饰符并将其更改为 Public:

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

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

this.Hide();          
form2.Show; 

【讨论】:

  • 非常适合我。至少你得到了我的 +1 ;)
  • 谢谢你,半小时不明白为什么无法访问文本,它就像通过“公共”提供一样简单:)
【解决方案2】:

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

public class Form2 : Form {
    ...

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

    ...
}

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

form2.AddItem(variable);

【讨论】:

    【解决方案3】:

    最好使用事件处理器来做这件事,你在表格1中注册一个事件处理器,当这个事件处理器被调用时,使用相应的方法。然后在form2中调用这个事件处理程序。该方法将负责将项目添加到组合框。

    【讨论】:

    • 检查我的评论,我想我们的想法是一样的,也许你可以用一些演示解决方案的示例代码来详细说明你的答案?
    • 你能举个例子吗
    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多