我有2个具有相似功能的按钮,因此我创建了一个基本按钮类和派生按钮类。
我遇到的问题是,如果我在表单上放置子按钮,对基本按钮进行一些更改并重建它,则表单上的子按钮不会反映更改。重建后,新的子按钮放在窗体上,它具有更改的属性。基本上,在重建基本控件之后,已经放在窗体上的控件不会刷新。
我无法刷新设计师的控件,因为它们太多了。我猜测如果控件放在表单上,则设置它的属性(?)。也许我对继承不够好,在这里遗漏了一些东西。
我想知道如何刷新在修改基本控件之前放在表单上的子控件。
使用最小,完整和可验证的示例更新:
以下是VB.NET中的示例。
Public Class ButtonA
Public Sub New()
Me.Size = New Size(200, 200)
End Sub
End Class
Public Class ButtonB
Inherits ButtonA
End Class
在一个名为btnB的ButtonB实例放在表单上后,ButtonA的默认大小变为
Me.Size = New Size(300, 300)
重建项目后,当我回顾设计师视图时,btnB的大小仍然是(200,200),而不是(300,300),因为它的基本默认大小。
大小仅用作示例,它适用于任何属性。
答案 0 :(得分:1)
问题在于,一旦在窗体上放置了控件,就会改变设计者在设计时不得使用的属性值。设计师允许您以某种形式对某个类进行控制,首次插入时将获取该控件的大小应该是什么。然后它将在该表单中将该大小分配给该控件。您可以随时通过更改该表单中任何表单的大小或位置来修改表单。设计师将跟踪所有这些。
如果您现在修改源代码以使其具有不同的默认值'然后,大小的值将不反映在更改大小之前创建的表单上 - 这是因为控件已经存在于您的表单上,因此设计者没有更长时间必须对尺寸做出任何改变。
如果您想要覆盖此行为,则必须删除设计器代码中的Size属性的赋值(Form.Desisgner.cs - 在C#中或其VB等效项)。但要注意 - 下次启动设计师时,它可能会将尺寸放回原处。