Wert von Textbox aus TabControl / TabPage nicht abrufbar

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Lupusverlach.

    Wert von Textbox aus TabControl / TabPage nicht abrufbar

    Ich habe da etwas, was ich mal so gar nicht verstehe (ja ich weiß, nix neues bei mir :D )

    Bei dem kleinen Testprojekt passiert folgendes:
    In einem TabControl (TabCMain) mit einer Textbox (Erster Name einer Adresse) und daran die BindingSource "BSKunden".
    In diesem TabControl (TabCMain) ein weiteres TabControl (TabCDetails) gesetzt, dort die Textboxen (Rest der Adresse inl. KdNr) an die daran die BindingSource "BSKunden" verknüpfe.

    Sieht dann so aus:

    Im TabControl (TabCMain) einen Button "KdNr lesen" mit diesem Code:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnKdNrlesen.Click
    2. TeBResult.Text = TeBKdNr.Text.ToString & " | " & TeBBlahBlah.Text.ToString
    3. End Sub


    Nachdem ich auf Button "KdNr lesen" geklickt habe sollte in der Textbox daneben die KdNr stehen, welche sich im Tab "Kundenadresse" befindet und der Inhalt von Textbox "Blahblah", auch im Tab "Kundenadresse"
    Jedoch funktioniert das nur, wenn man nach dem Starten zuvor einmal auf Tab "Kundenadresse" gewesen war.
    Wenn man zuvor nicht auf Tab "Kundenadresse" gewesen ist, kann man nur den Inhalt von Textbox "Blahblah" abrufen.

    Ich hätte halt gerne gewusst wie ich es anstellen muss, das Die KdNr immer abrufbar ist?
    Und warum wird ein Unterschied bei den Textboxen gemacht, die an einer BindingSource geknüpft ist und einer Textbox die mit Text gefüllt ist ohne gebunden zu sein?
    Dateien
    • TextboxTabpage.zip

      (121,11 kB, 144 mal heruntergeladen, zuletzt: )
    Mit freundlichen Dinges

    Lupus
    P.S: bei allen meine Fragen beziehen sich auf das arbeiten mit Visual Studio 2019 auf Win 10/64 bit und MySQL
    Joah, Databindings initialisieren sich erst bei Control_HandleCreated, und das tritt bei auf TabPages aufsitzenden Controls erst beim erstmaligen Betreten der Page auf.
    Aber ist eh extrem schlechter Stil, in datengebundene Controls zu grabschen.
    Rufe die Daten selbst ab, nicht iwelche Controls!

    VB.NET-Quellcode

    1. Imports TextboxTabpage.TextboxTabpageDataSet
    2. '...
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnKdNrlesen.Click
    4. Dim rwKunden = DirectCast(DirectCast(BSKunden.Current, DataRowView).Row, KundenRow)
    5. TeBResult.Text = rwKunden.KdNr.ToString & " | " & TeBBlahBlah.Text
    6. End Sub

    ErfinderDesRades schrieb:

    Aber ist eh extrem schlechter Stil, in datengebundene Controls zu grabschen.
    Rufe die Daten selbst ab, nicht iwelche Controls!

    Aja, dann werde ich das so machen. Vielen Dank.
    Das hab ich sogar kapiert :D
    Mit freundlichen Dinges

    Lupus
    P.S: bei allen meine Fragen beziehen sich auf das arbeiten mit Visual Studio 2019 auf Win 10/64 bit und MySQL