我有两个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;
}
}
答案 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();