如何:使用 Modifiers 和 GenerateMember 属性

将组件放置在 Windows 窗体上时,设计环境会提供两个属性:GenerateMemberModifiersGenerateMember 属性指定 Windows 窗体设计器何时为组件生成成员变量。 Modifiers 属性是分配给该成员变量的访问修饰符。 如果 GenerateMember 属性的值为 false,则 Modifiers 属性的值无效。

指定组件是否为窗体的成员

  1. 在 Visual Studio 的 Windows 窗体设计器中,打开你的窗体。

  2. 打开“工具箱”,然后在窗体上放置三个 Button 控件。

  3. 根据下表为每个 Button 控件设置 GenerateMemberModifiers 属性。

    按钮名称 GenerateMember 值 修饰符值
    button1 true private
    button2 true protected
    button3 false 没有变化
  4. 生成解决方案。

  5. 在“解决方案资源管理器”中,单击“显示所有文件”按钮。

  6. 打开 Form1 节点,然后在“代码编辑器”中打开 Form1.Designer.vb 或 Form1.Designer.cs 文件。 此文件包含 Windows 窗体设计器发出的代码。

  7. 查找三个按钮的声明。 以下代码示例显示了 GenerateMemberModifiers 属性指定的差异。

    private void InitializeComponent()
    {
        // button3 is declared in a local scope, because
        // its GenerateMember property is false.
        System.Windows.Forms.Button button3;
        this.button1 = new System.Windows.Forms.Button();
        this.button2 = new System.Windows.Forms.Button();
        button3 = new System.Windows.Forms.Button();
    
    Private Sub InitializeComponent()
    
        ' button3 is declared in a local scope, because 
        ' its GenerateMember property is false.
        Dim button3 As System.Windows.Forms.Button
        Me.button1 = New System.Windows.Forms.Button()
        Me.button2 = New System.Windows.Forms.Button()
        button3 = New System.Windows.Forms.Button()
    
    // The Modifiers property for button1 is "private".
    private Button button1;
    
    // The Modifiers property for button2 is "protected".
    protected Button button2;
    
    // button3 is not a member, because
    // its GenerateMember property is false.
    
     ' The Modifiers property for button1 is "Private".
     Private button1 As Button
    
     ' The Modifiers property for button2 is "Protected".
     Protected button2 As Button
    
    ' button3 is not a member, because 
    ' its GenerateMember property is false.
    

注意

默认情况下,Windows 窗体设计器将 private(Visual Basic 中的 Friend)修饰符分配给容器控件,如 Panel。 如果基础 UserControlForm 具有容器控件,它将不接受继承的控件和窗体中的新子级。 解决方法是将基容器控件的修饰符更改为 protectedpublic

另请参阅