Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB.net中查找特定的标签属性_Vb.net - Fatal编程技术网

在VB.net中查找特定的标签属性

在VB.net中查找特定的标签属性,vb.net,Vb.net,子绘图图() '用于绘制当前状态。 G=Me.CreateGraphics “G.Clear(Color.White)”将整个背景设置为白色 G.透明(透明) Dim占位符为整数=0',用于存储正在检查的当前点。 如果UsedLocations>0,则“此部件仅在有任何点时运行” 对于i=0到19 如果位置(i).Name为“未使用”,则“仅绘制未使用的点”。 如果Locations(i).StartPoint=True,则“仅在选择该点作为起点时绘制浅蓝色轮廓”。 '末端的-3用于纠正位置。

子绘图图()
'用于绘制当前状态。
G=Me.CreateGraphics
“G.Clear(Color.White)”将整个背景设置为白色
G.透明(透明)
Dim占位符为整数=0',用于存储正在检查的当前点。
如果UsedLocations>0,则“此部件仅在有任何点时运行”
对于i=0到19
如果位置(i).Name为“未使用”,则“仅绘制未使用的点”。
如果Locations(i).StartPoint=True,则“仅在选择该点作为起点时绘制浅蓝色轮廓”。
'末端的-3用于纠正位置。
G.FillEllipse(画笔.浅蓝色,位置(i).Xcoord-3,位置(i).Ycoord-3,16,16)
如果结束
如果位置(i).Selected=True,则“仅在当前选定点时绘制浅绿色轮廓”。
G.FillEllipse(画笔.浅绿色,位置(i).Xcoord-3,位置(i).Ycoord-3,16,16)
如果结束
G.FillEllipse(画笔.黑色,位置(i).Xcoord,位置(i).Ycoord,10,10)
如果结束
下一个
对于i=0,使用连接-1
"拉关系,
如果连接(i).PartOfSolution=True,则
G.拉线(红色笔,位置(连接(i).点一).Xcoord+5,位置(连接(i).点一).Ycoord+5,位置(连接(i).点二).Xcoord+5,位置(连接(i).点二).Ycoord+5)
其他的
G.拉线(黑色笔,位置(连接(i).点一).Xcoord+5,位置(连接(i).点一).Ycoord+5,位置(连接(i).点二).Xcoord+5,位置(连接(i).点二).Ycoord+5)
如果结束
下一个
'创建标签
控件。清除()
Dim NumberToMake As Integer=(39+使用的连接)
调暗信息标签(NumberToMake)作为标签
对于i=0,则为NumberToMake
信息标签(i)=新标签
信息标签(i).高度=13
infolabels(i).BackColor=Color.Red
如果我<20那么
infolabels(i).Text=位置(i).Name
信息标签(i).Top=位置(i).Ycoord-15
infolabels(i).Left=位置(i).Xcoord
如果位置(i).名称为“未使用”,则
Me.Controls.Add(信息标签(i))
如果结束
如果i>19,i<40
“dijkstra标签
其他的
控制台写入线(i)
控制台写入线(连接(i-40).长度)
infolabels(i).Text=CStr(连接(i-40).长度)
infolabels(i).Top=0
infolabels(i).Top=(位置(连接(i-40).PointOne.Ycoord+位置(连接(i-40).PointTwo.Ycoord)*0.5
'infolabels(i).Left=(位置(连接(i-40).PointOne).Xcoord+位置(连接(i-40).PointTwo.Xcoord)*0.5
Me.Controls.Add(信息标签(i))
如果结束
infolabels(i).Width=infolabels(i).Text.Length*15
下一个
如果结束
端接头
因此,当我尝试向表单添加标签以显示点和连接上方的信息时,我发现它们覆盖了这些点和连接。我已经将宽度和高度设置为适当的长度,没有任何更改。 我试着将背景颜色设置为红色以找出问题所在,但没有任何效果。 在玩过表单的背景色之后,我发现标签的侧面添加了一些白色部分(如上图所示),我找不到任何方法来控制它,以免它覆盖绘图对象

提前谢谢你的帮助


编辑:在进一步研究之后,似乎空白是标签在调整其大小之前通常占用的空间

在向表单添加控件之前,我必须调整标签的大小,如下所示:

If i < 20 Then
                infolabels(i).Text = Locations(i).Name
                infolabels(i).Top = Locations(i).Ycoord - 15
                infolabels(i).Left = Locations(i).Xcoord
                If Locations(i).Name <> "unused" Then
                    infolabels(i).Width = infolabels(i).Text.Length * 10
                    Me.Controls.Add(infolabels(i))
                End If
            ElseIf i > 19 And i < 40 Then
                'dijkstra labels
            Else
                Console.WriteLine(i)
                Console.WriteLine(Connections(i - 40).Length)
                infolabels(i).Text = CStr(Connections(i - 40).Length)
                'infolabels(i).Top = 0
                infolabels(i).Top = (Locations(Connections(i - 40).PointOne).Ycoord + Locations(Connections(i - 40).PointTwo).Ycoord) * 0.5
                infolabels(i).Left = (Locations(Connections(i - 40).PointOne).Xcoord + Locations(Connections(i - 40).PointTwo).Xcoord) * 0.5
                infolabels(i).Width = infolabels(i).Text.Length * 10
                Me.Controls.Add(infolabels(i))
            End If
如果我<20那么
infolabels(i).Text=位置(i).Name
信息标签(i).Top=位置(i).Ycoord-15
infolabels(i).Left=位置(i).Xcoord
如果位置(i).名称为“未使用”,则
infolabels(i).Width=infolabels(i).Text.Length*10
Me.Controls.Add(信息标签(i))
如果结束
如果i>19,i<40
“dijkstra标签
其他的
控制台写入线(i)
控制台写入线(连接(i-40).长度)
infolabels(i).Text=CStr(连接(i-40).长度)
'信息标签(i).顶部=0
infolabels(i).Top=(位置(连接(i-40).PointOne.Ycoord+位置(连接(i-40).PointTwo.Ycoord)*0.5
infolabels(i).Left=(位置(连接(i-40).PointOne).Xcoord+位置(连接(i-40).PointTwo.Xcoord)*0.5
infolabels(i).Width=infolabels(i).Text.Length*10
Me.Controls.Add(信息标签(i))
如果结束

有几件事不对
CreateGraphics
几乎从来都不是正确的绘制方式,如果在绘制事件中绘制,它将为您提供要使用的图形对象。您的应用程序也在泄漏资源,您应该可以通过任务管理器查看这些资源。白色部分可能是其他一些工件-如果标签是红色,则白色部分是其他东西-我应该如何停止资源泄漏。在什么地方处置?如果不是标签,我不知道它可能是什么,它们是我在运行时创建的唯一对象,正如您所看到的,它们周围没有任何东西。白色框仅与标签一起显示。
If i < 20 Then
                infolabels(i).Text = Locations(i).Name
                infolabels(i).Top = Locations(i).Ycoord - 15
                infolabels(i).Left = Locations(i).Xcoord
                If Locations(i).Name <> "unused" Then
                    infolabels(i).Width = infolabels(i).Text.Length * 10
                    Me.Controls.Add(infolabels(i))
                End If
            ElseIf i > 19 And i < 40 Then
                'dijkstra labels
            Else
                Console.WriteLine(i)
                Console.WriteLine(Connections(i - 40).Length)
                infolabels(i).Text = CStr(Connections(i - 40).Length)
                'infolabels(i).Top = 0
                infolabels(i).Top = (Locations(Connections(i - 40).PointOne).Ycoord + Locations(Connections(i - 40).PointTwo).Ycoord) * 0.5
                infolabels(i).Left = (Locations(Connections(i - 40).PointOne).Xcoord + Locations(Connections(i - 40).PointTwo).Xcoord) * 0.5
                infolabels(i).Width = infolabels(i).Text.Length * 10
                Me.Controls.Add(infolabels(i))
            End If