【问题标题】:Passing data from main form to usercontrol on the child form将数据从主窗体传递到子窗体上的用户控件
【发布时间】:2015-09-23 09:33:28
【问题描述】:

我正在尝试将列表传递给子窗体中的 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 事件处理程序中。有什么办法可以将此列表保存在内存中?我不想从文件中保存/加载它。

提前致谢。

【问题讨论】:

  • 你只是想让 myList 传递子表单对吗?

标签: c# forms


【解决方案1】:

在 OpenChildForm() 方法中,cf 和 uc 对象之间没有关系。为什么要在此方法中创建 UserControl 实例? Usercontrol 是 ChildForm 的一部分,因此将一个 selecteditemlist 从主窗体传递给子窗体,并在 ChildForm 的加载事件期间将 selecteditemlist 分配给 Usercontrol。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多