VB.Net 选择 LineShape

问题描述 投票:0回答:2

在 Vb.Net 中,我动态创建几个文本框和标签。我将他们命名为前。

VLabel1
VLabel2
VLabel3
...然后我使用
CType
和一个变量来使用它们。

Dim VarName as String
Dim i as Integer
Dim MyLabel as Label

i=0
VarName = ("VLabel" & i.ToString)
MyLabel = CType(Panel1.Controls(VarName), Label)

现在我使用 LineShape 添加线条(我不能使用高度为 1 的标签,因为我的线条是对角线)。我可以使用类似的方式来选择特定行,还是必须在 ShapeContainer 中使用循环并比较名称,直到找到我想要的行?

谢谢你,

斯蒂芬

vb.net shapes powerpacks
2个回答
0
投票

我是否必须在 ShapeContainer 中使用循环并比较名称,直到找到我想要的名称?

您认为

Controls(VarName)
有什么作用?它也必须按名称查找控件。如果您对此感到满意,您可以在表单中编写一个执行相同操作的方法。

但是对于线条形状和标签来说,更好的选择是使用

List(Of LineShape)
List(Of Label)
。当您创建动态控件并从表单中添加或删除它时,还要从列表中添加或删除它。然后您可以通过索引引用这些项目,而无需构建名称字符串。这样你的选角也会减少。


0
投票

按名称索引它们的另一个选项是使用

Dictionary(Of String,Lineshape)
Dictionary(Of String, Label)
。几个辅助子程序可以处理在需要的地方添加/删除以及添加/删除到适当的字典。这样,您还可以消除强制转换的需要,因为实际对象已经具有正确的类型。

更好的是,由于形状不是标准库的一部分,我建议学习如何直接在表单上绘制线条

我从来没有这样做过,但应该可以通过创建一个继承自 Control 类的类并重写 Paint 子来绘制线条,从而实际将线条创建为控件。

© www.soinside.com 2019 - 2024. All rights reserved.