使用字符串值查找文本块名称

时间:2014-05-14 01:46:16

标签: vb.net textblock

我的头衔可能很奇怪。我不知道该怎么说。这是重点。我有一个arraylist,它可以保存一些动态数据。它可以是10,20或30个数据或数据库中存在的任何数据。在我的页面上,我在2列中有42个文本块。这意味着我有一列“我的号码”和一列“我的名字”。 42个文本块是静态的。但是arraylist数据是动态的。如何循环遍历arraylist并用arraylist中的总数据填充文本块?我只是做了一些代码,但我不能想到逻辑。

Private Sub FillOthers()
        Dim name1, name2 As TextBlock
        Try
            For i = 1 To (arrOthers.Count)
                name1 = "tbothers_no" & i
                name2 = "tbothers_name" & i
                name1.Text = arrOthers.Item(i).dirno
                name2.Text = arrOthers.Item(i).dirname
            Next
        Catch ex As Exception
            strErrMsg = "Error at fill others textblock. " & vbCrLf & ex.Message
            Application.LogEvents(strErrMsg, EventLogEntryType.Error)
        End Try
End Sub

请参阅name1和name2。我希望数据通过循环计数填充文本块。现在我得到错误,字符串值无法转换为textblock。还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

我想你想要FrameworkElement::FindName()。这样的事情应该有效:

Dim name1, name2 As TextBlock
For i = 1 to arrOthers.Count
    name1 = TryCast(FindName("tbothers_no" & i), TextBlock)
    If name1 IsNot Nothing Then name1.Text = arrOthers.Item(i).dirno

    name2 = TryCast(FindName("tbothers_name" & i), TextBlock)
    If name2 IsNot Nothing Then name2.Text = arrOthers.Item(i).dirname
Next

答案 1 :(得分:0)

我的发现,测试和它的工作!

   Dim tb1(9) As TextBlock
   Dim tb2(9) As TextBlock

   tb1(0) = tbothers_dir1
   tb1(1) = tbothers_dir2
   tb1(2) = tbothers_dir3
   tb1(3) = tbothers_dir4
   tb1(4) = tbothers_dir5
   tb1(5) = tbothers_dir6
   tb1(6) = tbothers_dir7
   tb1(7) = tbothers_dir8
   tb1(8) = tbothers_dir9
   tb1(9) = tbothers_dir10

   tb2(0) = tbothers_name1
   tb2(1) = tbothers_name2
   tb2(2) = tbothers_name3
   tb2(3) = tbothers_name4
   tb2(4) = tbothers_name5
   tb2(5) = tbothers_name6
   tb2(6) = tbothers_name7
   tb2(7) = tbothers_name8
   tb2(8) = tbothers_name9
   tb2(9) = tbothers_name10

   For i = 0 To (arrOthers.Count - 1)
       tb1(i).Text = arrOthers.Item(i).strdirno
       tb2(i).Text = arrOthers.Item(i).strdirname
   Next