#vb.net
Вопрос:
например, я хочу объявить текстовое поле на основе того, что я пишу в поле. если я напишу textbox1. если я наберу textbox2.text, то это будет textbox2.text
Dim txt As TextBox = TextBox2.Text.ToString
Dim txt As String = TextBox2.Text
ни один из методов не является допустимым
Комментарии:
1. Мне непонятно, о чем вы спрашиваете. Почему вы объявляете одну и ту же переменную дважды? Почему вы вызываете
ToString
строку? Что конкретно вы пытаетесь сделать и что работает не так, как ожидалось?2. Вы не можете объявить элемент управления с именем, которое разрешается во время выполнения. Я думаю, это одна из проблем, которые можно решить с
Dictionary(Of String, String)
помощью .3. если я введу textbox1.text в поле, то моим текстовым полем будет textbox1.text (то есть текстовое поле, написанное в моем поле)
4. Почему вы хотите это сделать?
Ответ №1:
Ваше словоблудие, хотя и сбивает с толку, создает впечатление, что вы хотите ввести ИМЯ текстового поля в текстовое поле, а затем иметь возможность извлекать содержимое именованного текстового поля. Если это правильно, вы, вероятно, ищете элементы управления.Find() с опцией recurse:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim txtBoxName As String = TextBox1.Text.Trim
If txtBoxName.Length > 0 Then
Dim ctl As Control = Me.Controls.Find(txtBoxName, True).FirstOrDefault
If Not IsNothing(ctl) AndAlso TypeOf (ctl) Is TextBox Then
Dim tb As TextBox = DirectCast(ctl, TextBox)
' ... do something with "tb" ...
Dim value As String = tb.Text
MessageBox.Show(value)
Else
MessageBox.Show("Control not found, or incorrect type!")
End If
End If
End Sub