【发布时间】:2017-09-17 15:06:48
【问题描述】:
.NET 4.6.1。我创建了一个 Windows 窗体用户控件。我已将其更改为继承 System.Windows.Forms.TreeView 而不是 Control。在其中,我(在设计器中)添加了一个标签,我在控件内部决定何时显示标签。该控件被放置在一个窗体中,并在运行时填充了一个树结构(这是正确完成的)。问题是标签在运行时 Visible 属性设置为 True 时不显示。
Public Class Treeview111
Inherits System.Windows.Forms.TreeView
...
Public Sub ShowLabel
Label1.Visible=True
End Sub
即使在设计器中将 Visible 属性设置为 True,标签也不会显示。我曾尝试在运行时动态添加标签,但没有运气。我也尝试将其从 Friend 更改为 Public 但没有。 BringToFront 也没有帮助。检查了它的位置,它似乎在逻辑值内 (45,72)。
想不出别的了。我错过了什么吗?我正在努力实现的目标是否可能?
【问题讨论】:
-
最重要的代码丢失了,构造函数(Sub New)发生了什么并不明显。 InitializeComponent() 调用至关重要。虽然对于不是从 Form 或 UserControl 派生的类(您不能再使用设计器对其进行修改)来说它是没有意义的,但 Me.Controls.Add(Label1) 调用对于确保它可以被看到很重要。
-
>>最重要的代码不见了,构造函数(Sub New)发生了什么并不明显。这对我来说似乎很明显,因为省略对 InitializeComponent() 的调用会产生警告,因此不会丢失它。此外,在 VB.NET 中,“Me.Controls.Add(Label1)”是由 VS 自己自动添加到 Form.Designer.vb 文件中的。出于这两个原因,我认为没有必要投反对票。我来这里专门询问,在哪里看,因为我不明白什么可能导致问题。无论如何,您的回复为我指明了正确的方向(见回复)。
-
好吧,给我们看看好的重现代码。现在的情况还不足以让我们猜测它为什么不起作用。它不应该工作没有根本原因。
标签: vb.net winforms user-controls inherited