TabControl bei Reiter wechsel Ereignis Routine ausführen

  • VB.NET

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

    TabControl bei Reiter wechsel Ereignis Routine ausführen

    Hallo, ich versuche mein Problem über Umwege darzustellen. Wenn eich zum Beispiel einen Button als Steuerelement nehme, und ich bin im Entwurfsfenster, dann wird durch einen Doppelklick auf den Button Basic-Code erzeugt, ungefähr so, ich habe leider den genauen Code nicht greifbar:

    sub button1_click (...) handels ...
    endsub
    Diese Sub wird während des Programmsablaufs genau immer dann ausgeführt, wenn dieser button1 vom Anwender gedrückt wird. Das funktioniert so auch für alle anderen Steuerelemente, die ich so kenne: im Entwurfsfenster an dioe gewünschte Stelle plazieren, Doppelklick drauf, und schon wird der Code (die Sub) generiert, die dann ausgeführt wird, wenn dass Ereignis eintritt (z. B. wie oben, wenn Button gedrückt wird)

    Jetzt das Problem: Ich habe ein TabControl mit einigen Reitern definiert. Ich möchte jetzt, immer dann, wenn der Benutzer einen neuen Reiter anklickt (auswählt), eine Aktion ausführen, z. B. Daten aus der Datenbank auslesen und in der durch den neuen ausgewählten Reiter-TabPage darstellen.

    Ich krieg das einfach nicht hin, einen solchen Ereigniscode durch Doppelklick auf den Reiter generieren zu lassen.

    Was nach vielen Wirrungen jetzt funktioniert, ist, wenn ich auf die TabPage (also dass grosse rechteckige weise Inhaltsfeld) klicke, dann wird eine sub für diese TabPage erzeugt, hier mal als Beispiel zwei Stück für zwei Reiter mit TabPage1 bzw. TabPage2

    sub TabPage1_click (...) handels ....
    MessageBox.Show("Hallo 1")
    endsub

    sub TabPage2_click (...) handels
    MessageBox.Show("Hallo 2")
    endsub

    Diese Subs werden aber mur dann ausgeführt, wenn ich zuerst mit der Maus den Reiter auswähle, dann kommt die entsprechende TabPage "nach vorne", wird also sichtbar. Wenn ich jetzt mit der Maus auf die TabPage klicke, dann wird TabPage1_click oder TabPage2_click ausgeführt.

    Das ist aber so nicht sinnvoll. Diese Aktionen sollen sofort beim Betätigen des Reiters ausgeführt werden! Jetzt ist der Weg der, dass über die Maus der Reiter ausgewählt wird, es erscheint die TabPage, und jetzt muss nochmal auf die TabPage geklickt werden. Das bringt mich auch "logisch" in Probleme, weil nach dem Auswählen des Reiters mit der Maus veraltete Werte in der TabPage dargestellt werden. Und genau darum geht, Reiter anklicken, und es werden sofort, in der entsprechend Ereignis-ausgelösten sub, Daten aus einer Datenbank ausgelesen und in Textboxen eingetragen, die auf der TabPage liegt.

    Ich krieg das einfach nicht hin, wie ich so eine Ereignis-Sub erzeugen kann. Beim Doppelklick aus der Entwurfsansicht auf den Reiter öffnet sich nur die entsprechende Page, in die Basic-Form wird kein Ereigniscode generiert. Es sei denn, ich klicke auf die TabPage, dann wird wie oben Code generiert, der mir aber nichts nützt, weil ich eine Reaktion auf einen Reiterwechsel programmieren muss.

    Ich hoffe, ich habe mein Problem verständlich machen können. Vielleicht habt ihr eine Lösung, ich habe das Problem mal in Grundlagen gestellt, weil ich vermute, dass bei mir nur berühmte Groschen im Moment fehlt, der dann noch fallen kann.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hornblower“ ()

    Bitte um Beispiel

    SelectedIndexChanged

    Ich habe diesen Begriff auch schon gelesen, kann ihn aber praktisch nocht nicht verwerten. Warum wird eine solche Ereignis-Routine nicht "automatisch" aus dem Entwurfsfenster durch Doppelklick erzeugt? Welchen Code muss ich programmieren, damit sofort beim Reiterwechsel diese Routine ausgeführt wird?



    Anmerkung für Interessierte, ich habe ein Beispiel gefunden:

    Private Sub TabControl1_SelectedIndexChanged(sender as Object, e as EventArgs) _
    Handles TabControl1.SelectedIndexChanged

    MessageBox.Show("You are in the TabControl.SelectedIndexChanged event.")

    End Sub

    Ich teste es später noch, habe jetzt nicht den richtigen Rechner dabei, bin unterwegs, und hoffe, es funktioniert.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Hornblower“ () aus folgendem Grund: Lösung gefunden

    So werden Ereignishandler angelegt:
    Bilder
    • TabControl.jpg

      100,66 kB, 331×935, 965 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!