введите ИМЯ текстового поля в текстовое поле, а затем сможете получить содержимое именованного текстового поля

#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