Frage zu Events bei TabControl



  • Hi,

    ich möchte, wenn eine neue Registerkarte selektiert wird, wissen, welche Karte VORHER ausgewählt war. Ich habe unter dem .NET 2.0 beta bisher mit den Events "Selecting" und "SelectedIndexChanged" rumgespielt. Leider steht bei beiden als tabControl.SelectedTab bereits die neue TabPage.

    Jemand eine Idee?? Das wäre super



  • Ich habe jetzt nicht nachgeschaut, ob es eine Eigenschaft dafür gibt, aber folgender Code sollte Dir auch weiterhelfen.

    TabPage p = null;
    private void tabControl_Selected(object sender, TabControlEventArgs e)
    {
    	if( p != null)
    		MessageBox.Show(p.Name); // Name der letzten TabPage, falls vorhanden
    	else
    		p = new TabPage();
    
    	p = e.TabPage;  // TaPage speichern
    }
    


  • Bessere Lösung:

    TabPage p = null;
    private void tabControl_Selected(object sender, TabControlEventArgs e)
    {
    	MessageBox.Show(p.Name);
    }
    
    private void tabControl_Deselecting(object sender, TabControlCancelEventArgs e)
    {
    	p = new TabPage();
    	p = e.TabPage;
    }
    


  • ja, das ist schon klar. mit einer Instanz-Variablen könnte ich es lösen. Aber das finde ich nicht sehr elegant, weil ich dann ständig dafür sorgen muss, dass deren Zustand konstant ist.

    GIbt es also keine Möglichkeit, das TabControl direkt abzufragen, VOR dem "umschalten" auf die neue Page??



  • private void tabControl_Deselecting(object sender, TabControlCancelEventArgs e)
    {
    	MessageBox.Show(e.TabPage.Name);
    }
    


  • Oh, ja, das ist es 🙂 🙂

    wie Du auch schon zuvor gepostet hast.... ähem,istmirjapeinlich

    Danke!


Anmelden zum Antworten