C#将表单存储在通用列表中(不调用Form_load而调用它)

时间:2013-10-28 08:44:49

标签: c# winforms

我不确定如何解释这个问题,但我将一些表单与菜单(通用列表)一起保存,当我第一次将表单添加到通用列表时,它调用form_load(或者其他东西,构造函数被调用)并且它“缓存”表单。

实施例

public class Menu
{
 public Form Page {get; set;}
 public string Name {get;set;}

 public Menu(Form p, string n)
 {
  Page = p;
  Name = n;
 }

它的被称为

List<Menu> Menu = new List<Menu>();
Menu.Add(new Menu(new Start("Data here"), "Home"));

因此,我说自从我第一次运行将值添加到列表中的页面后,某些值发生了变化,它们会被“缓存”。因此,在我重新加载页面并将新对象添加到列表之前,新的更改不适用。

这是设计还是我错过了什么,这是一个糟糕的设计?

很抱歉解释得太差了,希望你能理解:)

1 个答案:

答案 0 :(得分:0)

根据Form.Load Event documentation,活动将被提出

  在第一次显示表单之前

换句话说:当表单完全初始化时会调用eventhandler,而当你调用Show()时,不会

您可以覆盖表单的OnLoad()方法(空体)和 - 当时机成熟时 - 只需拨打base.OnLoad()
或者您可以为Shown事件注册一个事件处理程序,一旦首次显示表单就会调用该事件处理程序,并更新已更改的值。

有关将在Windows窗体上触发的事件顺序的更多信息,请参阅here