当前位置: 首页 > 知识库问答 >
问题:

C# 从另一个窗体访问窗体的组合框项

步炯
2023-03-14

我有两个表单:表单1和表单2。comboBox在表单2中。我正在尝试将一个项目添加到表单1中的comboBox选项列表中。这是我迄今为止所做的尝试。

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

this.Hide();          
form2.Show; 

这个的问题是它不让我选择项目。(它不让我输入项目。添加)

我还试图通过点击表单中的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个答案

斜浩穰
2023-03-14

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

汪飞捷
2023-03-14

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

public class Form2 : Form {
    ...

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

    ...
}

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

form2.AddItem(variable);
闽康安
2023-03-14

现在您需要对代码做一点小小的修改:

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

this.Hide();          
form2.Show; 
 类似资料:
  • 本文向大家介绍C# Winform 子窗体访问父级窗体的控件和属性,包括了C# Winform 子窗体访问父级窗体的控件和属性的使用技巧和注意事项,需要的朋友参考一下 今天在做一个联系人管理的C#设计时,遇到了这个问题,我需要将父窗体中的textBox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textBox.text;来进行值传递,然而并无卵用,经过多次试验,找到了一个比较简

  • 我目前正在尝试制作一个应用程序(只是为了学习,试图习惯C#,因为我有点新手),我想在表单中创建一个可以说是终端的应用程序。我决定尝试使用包含多行的文本框,并尝试使用if和else语句,但当我进入文本框并开始键入时,它会立即返回每次击键后为“else”设置的错误消息。我不知道是什么,但我觉得我错过了什么。有什么建议吗?另外,是否可以单独为该应用程序创建我自己的“命令”?我说的是,当你输入“progr

  • 本文向大家介绍C#禁用双击窗体图标关闭窗体的方法,包括了C#禁用双击窗体图标关闭窗体的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#禁用双击窗体图标关闭窗体的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍浅谈C# winForm 窗体闪烁的问题,包括了浅谈C# winForm 窗体闪烁的问题的使用技巧和注意事项,需要的朋友参考一下 在构造函数里加上以下代码: 以上这篇浅谈C# winForm 窗体闪烁的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我正在创建一个简单的应用程序,使用GMap在c#上处理地图。NET控件。所以,我的问题是:我想用另一种形式制作多边形、多段线和标记。我的代码是: 第一种形式(MapModule): 第二种形式(新文件): 输出是: 谷歌地图。“MapModule.polylineOverlay”由于其保护级别而不可访问 我想,这一定很简单,但我对编程完全陌生。

  • 目前,我已经开始使用Selenium2.0/Web-Driver为我工作的公司进行自动化测试。 目前我已经开发了大约20个测试,但是当我运行这些测试时,它们会为每个测试打开一个新的浏览器窗口。 我在注册测试用例中运行它,然后 在第二个测试用例中运行,我认为应该将焦点放回第一个窗口。 我还使用关闭正在创建的其他窗口,但我希望它们一开始就不打开。