将数据从主窗体传递到子窗体上的usercontrol

时间:2015-09-23 09:33:28

标签: c# forms

我尝试将List传递给子窗体中的UserControl(UC)以填充此UC上的组合框。我试图在UC上声明一个公共属性,并将数据从MainForm传递给它以填充数据。 像这样:

主要表单

private void OpenChildForm()
{
     ChildForm cf = new ChildForm(myList); // list is global one
     UserControl uc = new UserControl();
     cf.Show();
     uc.InitializeLookup(myList);
}

子表格

public List<string> SelectedItems { get; set; }
public void InitializeLookup(List<string> listItems)
{
     SelectedItems = listItems.Select(s => s.ZipCode)
                              .Distinct()
                              .ToList();
}

无论我在哪里尝试访问SelectedItems,它都会变为空,无论如何,我在这里执行此操作:在UserControl_Load事件处理程序中,或在UserControl_Paint事件hadler中。有没有办法将此列表保留在内存中?我不想从文件中保存/加载它。

先谢谢。

1 个答案:

答案 0 :(得分:1)

在OpenChildForm()方法中,cf和uc对象之间没有关系。为什么要在此方法中创建UserControl的实例? Usercontrol是ChildForm的一部分,因此将一个selectitemlist从Main表单传递给子表单,并在ChildForm的load事件中将selecteditemlist指定给Usercontrol。