我不确定如何解释这个问题,但我将一些表单与菜单(通用列表)一起保存,当我第一次将表单添加到通用列表时,它调用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"));
因此,我说自从我第一次运行将值添加到列表中的页面后,某些值发生了变化,它们会被“缓存”。因此,在我重新加载页面并将新对象添加到列表之前,新的更改不适用。
这是设计还是我错过了什么,这是一个糟糕的设计?
很抱歉解释得太差了,希望你能理解:)
答案 0 :(得分:0)
根据Form.Load Event documentation,活动将被提出
在第一次显示表单之前。
换句话说:当表单完全初始化时会调用eventhandler,而当你调用Show()
时,不会。
您可以覆盖表单的OnLoad()
方法(空体)和 - 当时机成熟时 - 只需拨打base.OnLoad()
。
或者您可以为Shown
事件注册一个事件处理程序,一旦首次显示表单就会调用该事件处理程序,并更新已更改的值。
有关将在Windows窗体上触发的事件顺序的更多信息,请参阅here。