如何从项目不同的形式添加到列表框?(How to add items to a listbox fr

2019-10-17 13:10发布

我想一个新的项目在Form1窗体2从添加到列表框中。 它背后的想法是不同的项目彼此(或相同的,并不重要)的基础上的窗口2活动各为不同的列表结束。 说我打开Form(它有购物清单(列表框)),我打开窗口2,点击按钮,将“bannana”添加到列表中在Form1。 我该怎么做呢? 我tryed等各种方式在Form1加入“addToList(参数)”的方法,然后从窗口2调用它并传递参数,但名单将保留为空但是其他的东西,如消息框会弹出等,所以任何想法如何要解决这个问题?

我用这个方法在形式上一个项目添加到列表中,它的工作原理:

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,其中列表),它完美的罚款。 我甚至改变了访问modifyer公众,使不应该成为问题。

Answer 1:

您可以使用Form 2上的公共方法正如我在你的问题发表评论时提及。 下面是一个简单的例子。

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

From2

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

    public string getItem()
    {
        return textBox1.Text;
    }
}


文章来源: How to add items to a listbox from a different form?