【发布时间】:2016-01-31 04:12:39
【问题描述】:
我有 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) 作为它的基本默认大小。
大小仅用作示例,它适用于任何属性。
【问题讨论】:
-
也许您打算只使用 winforms 标签而不是 C# 或 VB.NET?将两个标签都放在您的问题上通常是错误的,因为问题和答案都不能同时涉及 C# 和 VB.NET。至于问题本身:“如果将控件放在表单上,则设置它的属性” - 是和否。如果属性的值不是控件的默认值,则在 *.Designer.cs 文件中设置属性。如果没有一个好的minimal reproducible example 清楚地表明你在做什么以及确切的问题是什么,就没有办法回答这个问题。
-
对不起,我不明白你们的意思。这是一个普遍的问题,而不是特定于语言的问题,因为它都发生在我的 C# 和 VB.NET 中的 winform 项目中。他们使用相同的 .NET 框架,我很困惑为什么把两个标签都认为是错误的。如果 C# 可以做某事,那么 VB.NET 大部分时间都可以做同样的事情,即使在语法上会有一些差异。如果我错了,请纠正我。
-
“我很困惑为什么把这两个标签都认为是错误的”——因为(正如你所说的)“这是一个普遍的问题,而不是特定于语言的问题"。您在问题上使用的标签表明您实际需要帮助的问题的哪一部分。语言标签指示正在使用的语言。如果您不在乎什么语言,则无需提供语言标签。您应该包含“winforms”标签,因为您的问题显然涉及 Winforms 功能。
-
我确实关心语言,.NET,因此我使用了 C# 和 VB.NET。我不是在 Java 或 Python 中问这个问题。 Winform 是 .NET 框架的一部分。按照您的逻辑,您是说 stackoverflow 中的大多数问题都有无效标签。
-
@fwan - 根据您的 逻辑,您也应该使用 F# 标记您的问题,因为该语言是 .NET 框架的一部分。