[英]Update a listbox from another 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;
}
}
這里:
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.UpdateList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.