VB.Net选择LineShape

时间:2018-04-05 19:43:13

标签: vb.net shape powerpacks

在Vb.Net中,我在dinamycally创建了几个文本框和标签。我将它们命名为ex。 VLabel1VLabel2VLabel3 ...然后我使用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中使用循环并比较名称,直到找到我想要的那个?

谢谢,

的Stephane

2 个答案:

答案 0 :(得分:0)

  

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

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

但LineShapes和标签的更好选择是使用List(Of LineShape)List(Of Label)。当您创建动态控件并在表单中添加或删除它时,也可以在列表中添加或删除它。然后,您可以通过索引引用这些项,而无需构建名称字符串。你也可以通过这种方式减少投射。

答案 1 :(得分:0)

按名称对其进行索引的另一个选项是使用Dictionary(Of String,Lineshape)Dictionary(Of String, Label)。一些帮助子可以在需要的地方处理添加/删除,并添加/删除到适当的词典。通过这种方式,您还可以消除对铸造的需求,因为实际对象已经是正确的类型。

更好的是,由于Shapes不是标准库的一部分,我建议学习如何draw the lines directly on to your form

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