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 VB2010列表(字符串)到多个标签_Vb.net_String_Winforms_List_Label - Fatal编程技术网

Vb.net VB2010列表(字符串)到多个标签

Vb.net VB2010列表(字符串)到多个标签,vb.net,string,winforms,list,label,Vb.net,String,Winforms,List,Label,我有64个面板,每个面板包含两个数据字符串。出于测试目的,我使用随机数生成器提供数据 我创建了一个字符串列表(总共64个字符串,包含“,”分隔每个面板的两段数据),现在需要将它们写入每个标签 我需要找到一种方法来拆分字符串数据(我知道如何拆分)并写入每个标签 例如:第一个字符串将被拆分并添加到名为Label1a和Label1b的第一个面板中,第二个字符串将拆分为Label2a和Label2b,等等 Dim LotData As New List(Of String) Dim randomnum

我有64个面板,每个面板包含两个数据字符串。出于测试目的,我使用随机数生成器提供数据

我创建了一个字符串列表(总共64个字符串,包含“,”分隔每个面板的两段数据),现在需要将它们写入每个标签

我需要找到一种方法来拆分字符串数据(我知道如何拆分)并写入每个标签

例如:第一个字符串将被拆分并添加到名为Label1a和Label1b的第一个面板中,第二个字符串将拆分为Label2a和Label2b,等等

Dim LotData As New List(Of String)

Dim randomnumber1 As Integer, randomnumber2 As Integer, randomchance As Integer
Dim slotnumber As String
Dim sbailes As String
Dim stemp As String

Randomize()

Dim n As Integer
For n = 1 To 64

  randomnumber1 = CInt(Rnd() * 1000000000)
  randomnumber2 = CInt(Rnd() * 300)
  randomchance = CInt(Rnd() * 1000)

  slotnumber = Convert.ToString(randomnumber1)

  'approximately 50% of the lots will be empty in this test
  If randomchance >= 500 Then
    sbailes = CStr(randomnumber2)
  Else
    sbailes = "0"
  End If

  LotData.Add(slotnumber & "," & sbailes)
Next

我唯一的解决方案是编写128行代码,手动添加每个字符串,但我知道肯定有比这更好的解决方案…

您可能希望通过字符串名称获得控件。我有一些方法可以帮助实现这一点(将它们放在一个模块中)

哦!!通过执行以下操作,您还可以省去在设计时将所有控件添加到表单的麻烦:

For i As Integer = 1 To 64
    Dim lblA As New Label()
    Dim lblB As New Label()
    lblA.Name = "Label" & i.ToString() & "A"
    lblB.Name = "Label" & i.ToString() & "B"
    ' do something about Locations here
    Me.Controls.Add(lblA)
    Me.Controls.Add(lblB)
    ' you could even add them to your panel.controls
Next

(不要忘记异常处理)

这是Windows窗体还是ASP.Net?
For i As Integer = 1 To 64
    CType(GetControlByName(Me, "Label" & i.ToString() & "A"), Label).Text = _
        LotData(i).Split(",").FirstOrDefault()
    CType(GetControlByName(Me, "Label" & i.ToString() & "B"), Label).Text = _
        LotData(i).Split(",").LastOrDefault()
Next
For i As Integer = 1 To 64
    Dim lblA As New Label()
    Dim lblB As New Label()
    lblA.Name = "Label" & i.ToString() & "A"
    lblB.Name = "Label" & i.ToString() & "B"
    ' do something about Locations here
    Me.Controls.Add(lblA)
    Me.Controls.Add(lblB)
    ' you could even add them to your panel.controls
Next