如何从不同的表单向列表框添加项

本文关键字:列表 添加 表单 | 更新日期: 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;
    }
}