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.
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“ ()