2014-08-27 4 views
-2

Я пытался найти решение для этого, но ничего не работает. У меня около 650 текстовых полей с именем: A001A, A002A ... A600A, и я хотел бы поместить значения в те текс-боксы, например, «примерное значение».Добавить значения в несколько текстовых полей (похожие имена)

Я нашел решение поместить значения во все текстовые поля в форме, но в моих есть те, у кого есть другие значения.

Следующая решение это один:

Dim textBoxArr() As TextBox = {A2, A3, A4, A5, etc..} 
For Each tb As TextBox In textBoxArr 
    Select Case tb.Text 
     Case "RESNO" 
      tb.Text = "-15,55,0" 
     Case "DOGAL" 
      tb.Text = "-15,54,0" 
    End Select 
Next 

... опять я должен ввести все имена и не имеют достаточно свободы, чтобы манипулировать значениями для первого 50 и так далее.

Это код, у меня есть, и он не работает:

For I As Integer = 0 To 650 
    Dim txt As TextBox = DirectCast(Me.Controls("A00" & I.ToString & "A"), TextBox) 
      txt.Text = "example value" 
Next 

ошибка: Ссылка на объект не указывает на экземпляр объекта

Спасибо за помощь.

EDIT: Я нашел решение от пользователя Idle_Mind

Dim matches() As Control 
For i As Integer = 1 To 650 
    matches = Me.Controls.Find("A" & String.Format("{0:000}", i) & "A", True) 
    If matches.Length > 0 AndAlso TypeOf matches(0) Is TextBox Then 
     Dim cb As TextBox = DirectCast(matches(0), TextBox) 
     If cb.Text = "" Then 
      cb.Text = "test" 
     End If 
    End If 
Next 
+0

Что об этом не работает? –

+1

'но ничего не работает' <--- будьте более конкретным. Вы не хотите иметь 650 текстовых полей с именем A001A, A002A ... A600A'. Пожалуйста, задайте вопрос о конкретной проблеме, которая у вас есть, а не о вашем попытке решения, которое не работает (по какой-либо причине). Наличие более 100 элементов управления в форме абсурдно, даже 50 слишком много. – Neolisk

+0

вам не нужно помещать текстовые поля в массив, просто их имена; и он не должен быть массивом, List (String) будет работать. вы также можете просто сделать что-то еще, например, 1 текстовое поле (или несколько) и Combo, чтобы выбрать домен для работы. пользователи имеют тенденцию перекрывать 650 элементов управления – Plutonix

ответ

1

Вы не тестируете для правой клавиши (если ваши TextBoxes правильно называется).

Попробуйте так:

For i As Integer = 1 To 650 
    Dim key As String = "A" & String.Format("{0:000}", i) & "A" 
    If Me.Controls.ContainsKey(key) Then 
    Me.Controls(key).Text = "blah" 
    End If 
Next 
+0

Это не работает. Строка правильная, но ничего не происходит внутри оператора if. – Jovica

+0

Я решил проблему ... отредактировал главный пост. – Jovica

+0

@Jovica Тогда ваше утверждение было неправильным: 'текстовые поля с именем: A001A, A002A'. Очевидно, что ваши текстовые заметки не названы так, и не очевидно, в каком контейнере находятся текстовые поля. – LarsTech

Смежные вопросы