【问题标题】:Add combobox item from another form won't work从另一个表单添加组合框项目将不起作用
【发布时间】:2015-09-24 13:59:31
【问题描述】:

我想在 form2 中的 form1 中向我的组合框中添加一个项目。但是如果我按下按钮,form2 会关闭,但该项目不会添加到 form1 中。我希望你能帮帮我!我在互联网上没有找到解决这个问题的方法。

表格2:

public void button5_Click(object sender, EventArgs e)
{
    Form1 main = new Form1();

    main.AddItem("Item");
    this.Close();
}

表格一:

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

【问题讨论】:

标签: c# forms combobox


【解决方案1】:

首先:您必须将comboBox 访问修饰符更改为public。那么:

表格 2:

public void button5_Click(object sender, EventArgs e)
{
     Form1 main = new Form1();
     main.AddItem("Item");

     this.Hide(); // This will hide Form2 ("this." is redundant)
     main.ShowDialog(); // This will show Form1
}

【讨论】:

  • 谢谢!这行得通!但是如果我单击按钮,form1 会打开 2 次。如果我单击 where 并打开第二个 form1,如何关闭第一个 form1?
  • 您可以删除“main.ShowDialog()”。
【解决方案2】:

引用“Form1”的 name 属性不要创建新实例。然后引用形成组合框控件。

您的原始代码创建了一个 NEW 实例。这意味着它创建了新版本的 Form1 而不是访问原始版本!

下面的代码应该会有所帮助

  public void button5_Click(object sender, EventArgs e)
        {

          Form1 myForm = whateverYourFormsNamePropertyIs;
          myForm.Combobox.AddItem("Item");
          this.Close();

        }

【讨论】:

  • 我试过了,但我得到了这个错误:(从德语翻译)错误7“Launcher.Form1”是一个“类型”,但它使用了一个变量。我用过:Form1 myForm = Form1;
  • stackoverflow.com/questions/7273862/… 这是一个很好的例子,说明如何在应用程序中引用其他表单。您需要在构造时将引用传递给 Form2
  • 修正你的答案;不要发布另一个链接。
【解决方案3】:

在form2中...

    Form1 f;
    public Form2(Form1 parent)
    {
        InitializeComponent();
        f = parent;
    }
    private void Add_Click(object sender, EventArgs e)
    {
        f.comboBox1.Items.Add("item");
    }

在表格1中

public void AddItem(object item)
{
  comboBox1.Items.Add(item);
  Form2 f = new Form2(this);
  f.Show();
}

【讨论】:

    【解决方案4】:

    原形

    private void FormPeople_Load(object sender, EventArgs e)
        {
            populateComboBoxTitles();
    }
    public void populateComboBoxTitles()
            {
                comboBox2.Items.Clear();
                comboBox2.Items.Add("mr");
                 comboBox2.Items.Add("miss");
    
    }
    private void button5_Click(object sender, EventArgs e)
        {
    FormAddTitle formAddTitle = new FormAddTitle(this);
            formAddTitle.Show();
    }
    

    次要形式

     FormPeople formPeople;
        public FormAddTitle(FormPeople formPeople)
        {
            InitializeComponent();
            this.formPeople = formPeople;
        }
    private void button1_Click(object sender, EventArgs e)
        {
    if (formPeople != null)
                formPeople.populateComboBoxTitles();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2012-10-14
      • 2021-09-11
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多