-1

我不确定如何解释这个问题,但我将几个表单与一个菜单(通用列表)一起保存,当我第一次将表单添加到通用列表时,它调用 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"));

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

这是设计使然还是我错过了什么,这是糟糕的设计吗?

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

4

1 回答 1

0

根据Form.Load Event 文档,该事件将被引发

在第一次显示表单之前。

换句话说:事件处理程序将在表单完全初始化时调用,而不是在您调用Show().

您可以覆盖OnLoad()表单的方法(使用空主体),并且 - 在适当的时候 - 只需调用base.OnLoad().
或者您可以为事件注册一个事件处理程序Shown,一旦第一次显示表单并更新已更改的值,就会调用该事件处理程序。

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

于 2013-10-28T09:41:07.880 回答