我尝试将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中。有没有办法将此列表保留在内存中?我不想从文件中保存/加载它。
先谢谢。
答案 0 :(得分:1)
在OpenChildForm()方法中,cf和uc对象之间没有关系。为什么要在此方法中创建UserControl的实例? Usercontrol是ChildForm的一部分,因此将一个selectitemlist从Main表单传递给子表单,并在ChildForm的load事件中将selecteditemlist指定给Usercontrol。