从另一个表单添加组合框项不工作
本文关键字:工作 组合 另一个 表单 添加 | 更新日期: 2023-09-27 18:14:18
我想从form2中添加一个项目到form1的组合框。但如果我按下按钮,form2关闭,但项目没有添加到form1中。我希望你能帮助我!我在网上找不到解决这个问题的方法。
形式2:
public void button5_Click(object sender, EventArgs e)
{
Form1 main = new Form1();
main.AddItem("Item");
this.Close();
}
形式1:
public void AddItem(object item)
{
comboBox1.Items.Add(item);
}
首先:您必须将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'的name属性不要创建一个新的实例。然后引用窗体组合框控件。
您的原始代码创建一个NEW实例。这意味着它创建了一个新版本的Form1,而不是访问原来的!
下面的代码应该有帮助
public void button5_Click(object sender, EventArgs e)
{
Form1 myForm = whateverYourFormsNamePropertyIs;
myForm.Combobox.AddItem("Item");
this.Close();
}
In form2…
Form1 f;
public Form2(Form1 parent)
{
InitializeComponent();
f = parent;
}
private void Add_Click(object sender, EventArgs e)
{
f.comboBox1.Items.Add("item");
}
在form1 public void AddItem(object item)
{
comboBox1.Items.Add(item);
Form2 f = new Form2(this);
f.Show();
}
原形
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();
}