如何从不同的表单向列表框添加项
本文关键字:列表 添加 表单 | 更新日期: 2023-09-27 17:49:58
我试图从form2添加一个新项目到form1的列表框。它背后的想法是基于form2活动,最终得到一个不同项目的列表,每个项目彼此不同(或相同,无关紧要)。假设我打开form1(它有购物列表(列表框)),我打开form2并单击按钮,将"香蕉"添加到form1中的列表中。我该怎么做呢?我尝试了各种方法,如在form1中添加"addToList(参数)"方法,然后从form2调用它并传递参数,但列表将保持空,但其他东西,如消息框会弹出等。有办法解决这个问题吗?
我在表单1中使用这种方法将项目添加到列表中,并且它有效:
public void addToList()
{
MessageBox.Show("Adding stuff to list");
listEvent.Items.Add("New item 1");
listEvent.Items.Add("new item 2");
MessageBox.Show("Done adding");
listEvent.Refresh();
}
现在当我尝试从另一个类/表单调用它时,我使用这个:
public void changeForm()
{
EventPlanner mainEventForm = new EventPlanner();
mainEventForm.addToList();
}
或:
private void btnAddEvent_Click(object sender, EventArgs e)
{
EventPlanner mainEventForm = new EventPlanner();
mainEventForm.addToList();
}
但它仍然不起作用。虽然当我从form1 (eventplanner,列表的地方)使用它时,它工作得很好。我甚至将访问修饰符更改为public,所以这应该不是问题。
您可以在Form2上使用公共方法,正如我在对您的问题的评论中提到的那样。下面是一个简单的例子。
Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
if (frm2.ShowDialog(this) == DialogResult.OK)
{
listBox1.Items.Add(frm2.getItem());
}
frm2.Close();
frm2.Dispose();
}
}
包含
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
button1.DialogResult = DialogResult.OK;
button2.DialogResult = DialogResult.Cancel;
}
public string getItem()
{
return textBox1.Text;
}
}