Wie Erhalten der Steuerelementeigenschaft von “String Name”?

Ich habe Schaltflächen und Textfelder erstellt, indem ich in der nächsten Schleife das Ergebnis codiert habe

'T(x).Name = "text_1" 'T(x).Name = "text_2" 'T(x).Name = "text_3" '.... 'B(x).Name = "button_1" 'B(x).Name = "button_2" 'B(x).Name = "button_3" '... 

und ich möchte Textboxeigenschaft bekommen, wenn ich den Knopf anklicke, kann ich button_1.Name.ToString wenn ich wie button_1.Name.ToString aber ich kann die Eigenschaft text_1,2,3 …. nicht erhalten.

Ich mache einen Trick durch Split-function button_1.Name.ToString und bekomme die letzte Zahl und füge es dem Textfeldnamen wie "text_" & button_1.Name.ToString aber ich kann diese Zeichenfolge nicht in Objekt konvertieren.

Aktualisieren

Hier ist der Code, den ich verwende, um die Steuerelemente in der Schleife zu laden:

 C_A_TEXT(x) = New TextBox() C_A_TEXT(x).Dock = System.Windows.Forms.DockStyle.Fill C_A_TEXT(x).Location = New System.Drawing.Point(270, 5) C_A_TEXT(x).Margin = New System.Windows.Forms.Padding(0) C_A_TEXT(x).Size = New System.Drawing.Size(70, 27) C_A_TEXT(x).TabIndex = 5 C_A_TEXT(x).Name = "NEW_RECHARGE_COUNT_TEXT_" & x 

Update 2

Hier ist noch mehr Code:

 AddHandler C_A_BUTTONS(x).Click, AddressOf C_A_BUTTON Private Sub C_A_BUTTON(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim thisButton As Button = sender Dim A = CType(Me.Controls("NEW_RECHARGE_COUNT_TEXT_1"), TextBox) MsgBox(A.Text.ToString) 'Error! End Sub 

Sie können auf die Steuerelemente über die Form.Controls Eigenschaft namentlich zugreifen:

 Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox) 

Als nützlicher Hinweis möchten Sie die Art des Steuerelements in der CType-statement zum Zugriff auf ein Steuerelement in Ihrem Formular nicht angeben. Ich bin darauf gestoßen, als ich versuchte, auf verschiedene Arten von Formularsteuerelementen zuzugreifen, z. B. Schaltflächen und Textfelder, alle mit der gleichen Codezeile.

 CType(Controls("NAME_OF_CONTROL"), Control) 

Beachten Sie, dass Sie nicht genau angeben, welche Art von Steuerelement, z. B. “TextBox” oder “Button”, einfach “Control” angeben. Auf diese Weise können Sie jeden Steuerelementtyp universell ändern, ohne seinen Typ angeben zu müssen.

Ich konnte das nirgendwo anders finden, also dachte ich, ich würde es teilen!

Unten ist der Code.

 Dim oObj As Object = Me.Controls.Find("control name", True).FirstOrDefault() Obj.Property = Value 

Ich hoffe, es hilft.

Der Titel des Threads und Ihre Beschreibung des Problems scheinen sich ein wenig voneinander zu unterscheiden.

Beantworten Sie Ihren Titel (um ein Steuerelement anhand seines Namens zu finden) wie folgt:

 Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL") 

Weitere Informationen zu dieser Methode finden Sie hier .

Gehen Sie folgendermaßen vor, um die Beschreibung Ihres Problems zu beantworten (um auf ein code-generiertes Steuerelement zuzugreifen, nachdem darauf geklickt wurde):

Fügen Sie in der Schleife, in der Sie das Steuerelement erstellen, den folgenden Handler hinzu

 Addhandler YOURCONTROL.Clicked, AddressOf Textbox_Clicked 

… und dann wird das Click-Ereignis behandelt

 Private Sub Textbox_Clicked(sender as object, e as RoutedEventArgs) Dim tbClicked = Ctype(sender, TextBox) 'You can now access any of the properties of the textbox, for example Dim txt as String = tbClicked.Text Dim name as String = tbClicked.Name Dim height as Double = tbClicked.Height End Sub 
 Dim sometext As TextBox = CType(Me.Controls("sometext "), TextBox)