我有一个带有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();
为了刷新列表视图,问题是我似乎无法正常工作。
感谢您的时间!
答案 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();