TabPages von TabControl nach TextBoxen durchsuchen mit Option Strict ON

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    TabPages von TabControl nach TextBoxen durchsuchen mit Option Strict ON

    Hallo zusammen,

    ich versuche ein TabControl auf einem Form nach einer bestimmten TextBox zu durchsuchen. Mit Option Strict OFF scheint es irgendwie zu funktionieren, mit ON hingegen bekomme ich die Meldung:

    Fehler 1 "Option Strict On" lässt spätes Binden nicht zu.

    VB.NET-Quellcode

    1. Friend Function FindTextBoxAndReturnItsValue(ActiveForm As Form, TabPageName As String, TextBoxName As String) As String
    2. FindTextBoxAndReturnItsValue = ""
    3. For Each control In ActiveForm.Controls
    4. If TypeOf control Is TabControl Then
    5. For Each tp As TabPage In control.Controls
    6. If tp.Name = TabPageName Then
    7. For Each tbo In tp.Controls.OfType(Of TextBox)()
    8. If tbo.Name = TextBoxName Then
    9. FindTextBoxAndReturnItsValue = tbo.Text
    10. End If
    11. Next tbo
    12. End If
    13. Next tp
    14. End If
    15. Next control
    16. End Function


    Angemeckert wird das "control.Controls" in "For Each tp As TabPage In control.Controls".

    Ich habe mehrere Forms mit einem TabControl und außerhalb der Lauzeit ist nicht bekannt welches der Forms durchsucht werden soll.
    Daher auch die drei Parameter:

    1. Das Form welches durchsucht werden soll,
    2. Die TabPage auf welches es die TextBox zu finden gilt,
    3. Die TextBox die es innerhalb der TabPage zu finden gilt,

    Könnte mir jemand helfen dieses Problem zu lösen, oder (sofern es halt so sein sollte) mir einfach schreiben, dass das was ich vorhabe halt einfach nicht funktioniert. Ich wüsste nämlich an dieser Stelle nicht, welchen Cast ich verwenden müsste um eine korrekte Bindung zu erstellen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roepke“ ()

    Schön das du Option Strict On hast. :thumbsup: Mit den TextBoxen hattest du es doch schon! ;)

    VB.NET-Quellcode

    1. .OfType(Of TextBox)()

    VB.NET-Quellcode

    1. Friend Function FindTextBoxAndReturnItsValue(ByVal ActiveForm As Form, ByVal TabPageName As String, ByVal TextBoxName As String) As String
    2. FindTextBoxAndReturnItsValue = ""
    3. For Each control In ActiveForm.Controls.OfType(Of TabControl)()
    4. For Each tp As TabPage In control.Controls.OfType(Of TabPage)()
    5. If tp.Name = TabPageName Then
    6. For Each tbo In tp.Controls.OfType(Of TextBox)()
    7. If tbo.Name = TextBoxName Then
    8. FindTextBoxAndReturnItsValue = tbo.Text
    9. End If
    10. Next tbo
    11. End If
    12. Next tp
    13. Next control
    14. End Function

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Um Nochmal das Problem verständlich zu machen:

    roepke schrieb:

    Angemeckert wird das "control.Controls" in "For Each tp As TabPage In control.Controls".
    Schau mal nach, welchen Datentyp die Variable control in deim Original-Code hat.
    Nutze dafür einfach die Intellisense, wie hier gezeigt: Video-Tut: Welchen Datentyp hat das Objekt?

    Daran schliessen sich dann weitere Fragen an - jdfs. wenns interessiert.
    Jetzt hab ich's wohl kapiert. Habe solange dran rumgedoktort, bis ich vor lauter, lauter den Wald nicht mehr gesehen hab.
    'control' war Object und sollte natürlich TabControl sein. Mir war nur nicht klar, wie ich's dazu bringe. Dabei hatte ich's bei tbo auch schon angewendet. Nur wie gesagt, war ich am Ende irgendwie betriebsblind.
    Danke für Eure Antworten.