.net Visual Studio Designer在呈现WinForm时调用哪些方法? Visual Studio设计器在尝试呈现WinForms类时调用哪些方法 当Winforms类从另一个Winforms类继承时会发生什么

.net Visual Studio Designer在呈现WinForm时调用哪些方法? Visual Studio设计器在尝试呈现WinForms类时调用哪些方法 当Winforms类从另一个Winforms类继承时会发生什么,.net,winforms,visual-studio-2010,visual-studio,.net,Winforms,Visual Studio 2010,Visual Studio,当Winforms类从另一个Winforms类继承时会发生什么 在过去,我使用WinForm继承来强制表单之间的标准布局—有点像主表单。在设计模式下,添加到父窗体的任何控件都将显示在子窗体中。不能直接从子窗体设计器编辑父窗体 当Winforms类从另一个Winforms类继承时会发生什么 在过去,我使用WinForm继承来强制表单之间的标准布局—有点像主表单。在设计模式下,添加到父窗体的任何控件都将显示在子窗体中。不能直接从子窗体设计器编辑父窗体 经过实验,我发现: 如果要在VS Designe

当Winforms类从另一个Winforms类继承时会发生什么

在过去,我使用WinForm继承来强制表单之间的标准布局—有点像主表单。在设计模式下,添加到父窗体的任何控件都将显示在子窗体中。不能直接从子窗体设计器编辑父窗体

当Winforms类从另一个Winforms类继承时会发生什么


在过去,我使用WinForm继承来强制表单之间的标准布局—有点像主表单。在设计模式下,添加到父窗体的任何控件都将显示在子窗体中。不能直接从子窗体设计器编辑父窗体

经过实验,我发现:

  • 如果要在VS Designer中打开具有YourClass.Designer.cs文件的表单,则:
    • YourClass.Designer.cs中定义的属性/字段将是新的
    • 将调用“InitializeComponent()”方法
  • 注意:奇怪的是,您的构造函数将不会被调用,您可以通过以下类似的方式向自己证明这一点(注意,设计师可以使用以下代码):

  • 如果该类没有SomeControl.Designer.cs文件,或者它是您在VS设计器中打开的类中的组件,则将调用该组件的构造函数。您可以使用上面的示例再次测试这一点

  • 经过实验,我发现:

  • 如果要在VS Designer中打开具有YourClass.Designer.cs文件的表单,则:
    • YourClass.Designer.cs中定义的属性/字段将是新的
    • 将调用“InitializeComponent()”方法
  • 注意:奇怪的是,您的构造函数将不会被调用,您可以通过以下类似的方式向自己证明这一点(注意,设计师可以使用以下代码):

  • 如果该类没有SomeControl.Designer.cs文件,或者它是您在VS设计器中打开的类中的组件,则将调用该组件的构造函数。您可以使用上面的示例再次测试这一点
  • public class YourClass ... {
       public YourClass() {
         throw new Exception("Ha (1)!");
         InitializeComponent();
         throw new Exception("Ha (2)!");
       }
    }