1

我正在尝试将新项目从 form2 添加到 form1 中的列表框。它背后的想法是根据 form2 活动最终得到一个不同项目的列表,每个项目彼此不同(或相同,无关紧要)。假设我打开 form1(它有购物清单(列表框)),然后打开 form2 并单击按钮,该按钮会将“bannana”添加到 form1 的列表中。我该怎么做呢?我尝试了各种方法,例如在 form1 中添加“addToList(parameter)”方法,然后从 form2 调用它并传递参数,但列表将保持为空,但是会弹出消息框等其他内容。所以任何想法如何解决这个问题?

我在表格一中使用此方法将项目添加到列表中并且它有效:

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 (事件计划者,列表所在的位置)使用它时,它工作得非常好。我什至将访问修改器更改为公共,所以这不应该是问题。

4

1 回答 1

2

正如我在对您的问题的评论中提到的,您可以在 Form2 上使用公共方法。这是一个简单的例子。

表格1

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();
    }
}

从2

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
        button1.DialogResult = DialogResult.OK;
        button2.DialogResult = DialogResult.Cancel;
    }

    public string getItem()
    {
        return textBox1.Text;
    }
}
于 2012-12-29T00:11:07.050 回答