2011-02-07 55 views
0

我在我的InitializeComponent中有一些影响基于某些变量的布局的条件。不幸的是,似乎每当我重建我的应用程序时,这些代码都会恢复到之前的状态。这个代码是基于Designer界面重新生成的吗?有没有办法阻止它做到这一点?IntializeComponent不断被覆盖

+0

确实,这是设计。你需要把你的代码放在其他地方。如果你需要做很多有条件的属性设置,你可能根本不想使用设计器。 – 2011-02-07 17:35:51

回答

2

是的,InitializeComponent是完全由IDE生成的;甚至不要试图搞砸它。

如果您有要添加/删除某些控件的条件逻辑,请在您的控件的构造函数之后执行自动生成的对InitializeComponent的调用。

请注意,如果有条件的东西将取决于在设计时启用/禁用的功能(例如,如果其他人正在使用您的控件,并且您提供了属性来影响您打算在设计时设置的控件行为时间),使用构造函数将不起作用,因为构造函数在用户从设计视图中做出选择时已经运行;在这种情况下,重写OnLoad方法,并将逻辑放在那里(或者做一些变化,例如,处理Load事件本身 - 有很多方法可以为此猫着想)。

+0

总是比覆盖`OnLoad`更好地处理事件,*特别是*如果您计划让其他开发人员利用您的控件。但+1是一个彻底和正确的答案。 – 2011-02-07 17:38:14