如何:使用 Modifiers 和 GenerateMember 属性
将组件放置在 Windows 窗体上时,设计环境会提供两个属性:GenerateMember
和 Modifiers
。 GenerateMember
属性指定 Windows 窗体设计器何时为组件生成成员变量。 Modifiers
属性是分配给该成员变量的访问修饰符。 如果 GenerateMember
属性的值为 false
,则 Modifiers
属性的值无效。
指定组件是否为窗体的成员
在 Visual Studio 的 Windows 窗体设计器中,打开你的窗体。
打开“工具箱”,然后在窗体上放置三个 Button 控件。
根据下表为每个 Button 控件设置
GenerateMember
和Modifiers
属性。按钮名称 GenerateMember 值 修饰符值 button1
true
private
button2
true
protected
button3
false
没有变化 生成解决方案。
在“解决方案资源管理器”中,单击“显示所有文件”按钮。
打开 Form1 节点,然后在“代码编辑器”中打开 Form1.Designer.vb 或 Form1.Designer.cs 文件。 此文件包含 Windows 窗体设计器发出的代码。
查找三个按钮的声明。 以下代码示例显示了
GenerateMember
和Modifiers
属性指定的差异。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。 如果基础 UserControl 或 Form 具有容器控件,它将不接受继承的控件和窗体中的新子级。 解决方法是将基容器控件的修饰符更改为 protected
或 public
。