以不同形式

时间:2016-05-24 13:46:39

标签: c# winforms

我有一个带有Listview的表单,我填充了一个包含数据库中所有来宾的List

    private void PopulateListBox()
    {
        var guests = Repository.GetAllGuests();

        foreach (var guest in guests)
        {
            ListViewItem lvData = new ListViewItem(guest.AccountID.ToString());

            lvData.SubItems.Add(guest.Username);
            lvData.SubItems.Add(guest.Email);
            lvData.SubItems.Add(guest.FirstName);
            lvData.SubItems.Add(guest.LastName);
            lvData.SubItems.Add(guest.TelephoneNumber);
            lvData.SubItems.Add(guest.AddressLine1);
            lvData.SubItems.Add(guest.AddressLine2);
            lvData.SubItems.Add(guest.City);
            lvData.SubItems.Add(guest.State);
            lvData.SubItems.Add(guest.Postcode);
            lvData.SubItems.Add(guest.Country);

            listViewGuests.Items.Add(lvData);
        }
    }

我还有一个添加访客的按钮:

private void btnAddGuest_Click(object sender, EventArgs e)
{
    FormAddGuest formAddGuest = new FormAddGuest();
    formAddGuest.MdiParent = this.MdiParent;
    formAddGuest.Show();
}

这打开了另一个表单,我可以在其中添加一个guest虚拟机,我希望实现的是当添加guest虚拟机时,它应该超出这两行:

listViewGuests.Items.Clear();
PopulateListBox();

为了刷新列表视图,问题是我似乎无法正常工作。

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

使用ShowDialog,以解决此问题

private void btnAddGuest_Click(object sender, EventArgs e)
{
  FormAddGuest formAddGuest = new FormAddGuest();
  //formAddGuest.MdiParent = this.MdiParent;
  formAddGuest.ShowDialog();
  listViewGuests.Items.Clear();
  PopulateListBox();    
}

FormAddGuest只要您关闭此表单(无论您是否添加了访客),您的列表都会重新绑定。

答案 1 :(得分:0)

尝试将MdiParent设置为Add Guest按钮所在的Form:

formAddGuest.MdiParent = this;

然后,您可以从添加访客表单中访问该列表:

((ListView)this.MdiParent.Controls["listViewGuests"]).Items.Clear();

并使PopulateListBox()公开,以便您可以调用:

this.MdiParent.PopulateListBox();