如何:使用 Modifiers 和 GenerateMember 属性

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

指定一个组件是否是表单的成员

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

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

  3. 根据下表设置每个 GenerateMember 控件的 ModifiersButton 属性。

    按钮名称 GenerateMember 值 修饰符值
    button1 true private
    button2 true protected
    button3 false 无更改
  4. 生成解决方案。

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

  6. 打开 Form1 节点,在 代码编辑器中,打开 Form1.Designer.vbForm1.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

另请参阅