vb.net строка для объекта - PullRequest
1 голос
/ 23 июня 2011

Мне нужна помощь в приведении строки в объект (который является параметром процедуры). Я также пытался Ctype , но это не сработало.

Public Sub procName(lbl1 as Label, lbl2 as Label, lbl3 as Label) 'supposed i have 10 labels

      'long Code here

       for i as integer = 1 to 3
            dim xL as label = DirectCast(Controls("lbl" & i.ToString), Label)
            xL.text = i.Tostring    '(error here: Object reference not set to an instance of an object.) 
       next

End Sub

Ответы [ 4 ]

2 голосов
/ 23 июня 2011

Как указывает Вивек, xL равно Nothing. для вашего данного i, i.ToString() не может выдать Null Reference Exception.

Попробуйте

   for i as integer = 1 to 3
        dim xL as label = DirectCast(Controls("lbl" & i.ToString), Label)
        If xL IsNot Nothing
            xL.text = i.Tostring    
        End If
   next
2 голосов
/ 23 июня 2011

DirectCast (Controls ("lbl" & i.ToString), Label) выдает нулевое значение (или ничего)

Что возвращает Controls ("lbl" & i.ToString)?это метка типа?

Изменения:

У меня не установлен VB ... поэтому я не могу проверить следующий код ...

    for i as integer = 1 to 3 
        For Each acontrol As Control In Controls
           If acontrol.Name = "lbl" & i.ToString Then
               xL.text = i.Tostring
           End If
       Next
    Next
1 голос
/ 23 июня 2011

Вместо того, чтобы проходить 3 разные метки, как насчет того, чтобы пройти список меток и выполнить итерацию по нему.Таким образом, ваша функция станет более динамичной и чистой.

Public Sub procName(ByVal labels As List(Of Label))

        Dim i As Integer = 1

        For Each lbl As Label In labels

            Dim xL As Label = lbl

            xL.Text = i.ToString

            i += 1
        Next

 End Sub
1 голос
/ 23 июня 2011

Код, который вы показываете, ожидает найти в вашей форме три элемента управления Label (или, по крайней мере, в рамках выполняемого кода) с именами lbl1, lbl2 и lbl3.

Ошибка говорит вамчто один или несколько из этих элементов управления не могут быть найдены.

...