从另一个列表框更新列表框

时间:2013-12-29 22:07:42

标签: c# winforms listbox

我有两个Winforms(admForm和projForm),每个都有一个列表框。在admForm中,您可以在属于此表单的列表框中添加用户。

到目前为止一切正常,但我想用“admForm”中列表框中的对象更新“projForm”中的列表框。

有什么想法吗?

在admForm中:

public string ListBox
{
    get { return lstUserOrProject.Items.ToString(); }
}

在projForm中:

private void UpdateList()
{
    AdminForm admForm = new AdminForm();
    lstAvailableUser.Items.Add(admForm.ListBox.ToString());
}

打开projForm的代码:

    private void btnAdd_Click(object sender, EventArgs e)
    {
        int index = lstUserOrProject.SelectedIndex;

        switch (cmbUserOrProject.SelectedIndex)
        {
            case (int)UserOrProject.Projects:
                ProjectForm proj = new ProjectForm("Add Project");

                if (proj.ShowDialog() == DialogResult.OK)
                {
                    projMngr.AddProject(proj.ProjectData);
                    UpdateProject();
                }
                break;

            case (int)UserOrProject.Users:
                UserForm user = new UserForm("Add User");


                if (user.ShowDialog() == DialogResult.OK)
                {
                    userMngr.AddUser(user.UserData);
                    UpdateUser();
                }
                break;
        }
    }

1 个答案:

答案 0 :(得分:0)

下面:

AdminForm admForm = new AdminForm();

您正在创建全新的实例。

如果您在AdminForm之后打开projForm,当您显示表单时,请使用以下代码:

ProjForm projForm = new ProjForm();  // change ProjForm if your form class name is different
projForm.Show(this);

然后在你的projForm中你可以像这样访问你的listBox:

private void UpdateList()
{
  var items = Owner.lstUserOrProject.Items; // Owner represents your admin form
  lstAvailableUser.Items.Clear();

   foreach(var item in items)
   {
      lstAvailableUser.Items.Add(item);
   }
 }

更新

在AdminForm中将此定义移到页面顶部,我的意思是:

class AdminForm : Form
{
   // move your definition here
   ProjForm projForm = new ProjForm();  // change ProjForm if your form class name is different
}

然后当您想要显示表单时:

projForm.Show(this);

如果您想在projform中更新列表,请调用更新方法:

projForm.UpdateList();