c# – tabControl – tabPage – Fehlende Visible Eigenschaft

Wer in WinForms Anwendungen das tabControl einsetzt wird über kurz oder lang darüber stolpern, dass die tabPage Controls keine Visible Eigenschaft besitzen.

Das bedeute es ist weder in der Entwicklungsumgebung noch zur Laufzeit Möglich einfach durch setzen der Visible Eigenschaft einzelne tabPage Seiten zwischen sichtbar und unsichtbar umzuschalten.

Hier daher ein kleines Code Snippet mit dem man die tabPage aus dem Programmcode heraus aus der tabPage Auflistung des tabControls entfernen oder hinzufügen kann.

// Hier der Code für Visible=False
tabControlOptionen.TabPages.Remove(tabUser);

// Hier der Code für Visible=True
tabControlOptionen.TabPages.Add(tabUser);

TabPageVisibleHideDemo

10 Gedanken zu „c# – tabControl – tabPage – Fehlende Visible Eigenschaft“

  1. Ganz so leicht ist es leider nicht: Angenommen es gibt 5 TabPages, die Entfernte stand an Position 2, steht sie nach dem erneuten einfügen an Position 5 – was nicht immer gewünscht ist. Man müsste dann eine Routine implementieren, die jedesmal das gesamte TabControl leert und in der richtigen Reihenfolge neu füllt :-/

    1. Hallo David,
      Danke für deinen Hinweis.
      Und recht hast du auch.
      Ich wollte auch nur das Prinzip darstellen. Aber du hast doppelt recht, eventuell führt das zu Mißverständnissen.
      Deshalb hier eine kleine Routine, welche genau das macht.
      Das Beispiel geht von 5 Pages aus, und die Dritte wird je nachdem ob Sie sichtbar oder nicht ist, ein bzw, ausgeschaltet.
      Von 5 Pages wird die Dritte, wenn Sie sichtbar ist aus der Auflistung entfernt, und wenn Sie nicht sichtbar ist einfach wieder an der Stelle (Index 2 beginnt bei 0) eingefügt.

      
              private void ToggleTabPageVisibility()
              {
                  if (tabControl1.TabPages.Contains(tabPage3))
                  {
                      tabControl1.TabPages.Remove(tabPage3);
                  }
                  else
                  {
                      tabControl1.TabPages.Insert(2, tabPage3);    
                  }
              }
      
  2. Hallo,

     

    leider werden nur leere Tabs eingefüg, bzw. geadded. Ich habe ein TabControl mit 7 Tabs, die je nach Status anwählbar, bzw. sichtbar sein sollen. Auf diesen Tabs sind schon einige Controls, die ich alle in der Entwicklungsumgebung angelegt habe… Gibt es da auch einen Weg? Ich möchte gefüllte Tabs einfach sperren, bzw freischalten.

     

    Gruß und danke RUDI

  3. Hi,

     

    ich habe einen Tab, auf dem viele Eingabefelder und weitere Controls vorhanden sind.. Dieser Tag soll unter gewissen Umständen nicht auswählbar, bzw. sichtbar sein. Ich habe den Tab beim Eintreten des entsprechenden Events mit Remove entfernt. Klappt gut. Wenn ich dann den Tab wieder einfüge bzw. adde, sind die Controls natürlich nicht mehr auf dem Tab. Das Tab ist leer und die Controls müssten per Programm wieder erzeugt werden, was ich eigentlich nicht vor hatte.

    Wenn das überhaupt nicht geht, checke ich meine Bedingung beim Auswählen des Tags, gebe eine Fehlermeldung aus dass dieser Tag zur Zeit nicht verwendet werden darf und wähle automatisch den Tab aus, der vor davor aktiv war…

     

    Ist es jetzt klarer?

     

    Danke und Gruß Rudi

    1. Hallo Rudi,

      Ich galube ja, nun ist es klarer welches Problem du hast. 
      Ich habe auch eine Lösung dafür (denke ich).

      Mal schauen ob ich am Nachmittag dazu komme dann schreibe ich dir es ausfürhlicher.

      Beste Grüße
      HP

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.