Laden...

Tab im TabControl auf enabled false setzen

Erstellt von bbth6afi vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.382 Views
B
bbth6afi Themenstarter:in
7 Beiträge seit 2019
vor 4 Jahren
Tab im TabControl auf enabled false setzen

Hallo,

ich habe ein Problem beim Erstellen eines Verwaltungsprogramms, und zwar habe ich eine DataGridView und einen Bereich wo in einer TabControl Informationen angezeigt werden.
Nun möchte ich dass beim Programmstart nur 1 Tab aktiv ist, die anderen sollen nicht anklickbar sein, also auf enabled false.
Die anderen Tabs sollen erst aktiv werden wenn ein Eintrag in der DataGridView angeklickt wurde.
Da ich noch neu in dieser Programmiersprache bin komme ich nicht weiter, habs auch schon mal mit "tabControl2.TabPages[1].Enabled = false;" probiert, aber das hat nicht funktionert.
Ich hoffe mir kann jemand helfen.

4.931 Beiträge seit 2008
vor 4 Jahren

Das TabControl (bzw. dessen TabPages) unterstützen dies nicht. Es gibt zwar die Eigenschaft TabPage.Enabled, aber

Dieser Member hat für das genannte Steuerelement keine Bedeutung.

Vllt. hilft dir aber Vorgehensweise: Deaktivieren von Registerkartenseiten (How to: Disable Tab Pages)?

B
bbth6afi Themenstarter:in
7 Beiträge seit 2019
vor 4 Jahren

hab's mal ausprobiert und hat nicht geklappt

16.806 Beiträge seit 2008
vor 4 Jahren

Okay. Magst auch sagen, wieso das nicht geklappt hat oder sollen wir raten? 🤔

B
bbth6afi Themenstarter:in
7 Beiträge seit 2019
vor 4 Jahren

für den Versuch habe ich eine boolean Variable "wert1=false" angelegt, die Methode sieht so aus:

private void tabControl2_SelectedIndexChanged(object sender, System.EventArgs e)
        { 
            if(wert1 == true)
            {
                tabControl2.SelectedTab = tabPage2;
            } else
            {
                tabControl2.SelectedTab = tabPage1;
            }
        }

Wenn ich keinen Eintrag von der DataGridView anklicke ist nur der 1. Tab aktiv und die anderen können nicht ausgewählt werden, das klappt soweit, nur sobald ich einen Eintrag anklicke und den
2. Tab anklicke kann ich nicht mehr zum 1. Tab zurück.
Vielleicht muss ich es mal mit mehreren if-Anweisungen probieren.

4.931 Beiträge seit 2008
vor 4 Jahren

Die Logik ist ja dann auch falsch implementiert.
Nur wenn die boolsche Variable true ist, darf TabPage2 (und die anderen) selektiert werden, während TabPage1 ja immer selektierbar sein soll - also den TabPage-Klick nur im anderen Fall rückgängig machen:

 
if (!wert1)
  tabControl2.SelectedTab = tabPage1;

PS: Und packe deinen Code hier in C#-Tags (kannst auch nachträglich deinen Beitrag hier editieren).

463 Beiträge seit 2009
vor 4 Jahren

Hättest du zwar auch ganz einfach selber finden könnnen, aber hier sollte dir geholfen werden:
Vorgehensweise: Deaktivieren von Registerkartenseiten

TIPP: Code nicht nur kopieren - Code muss man verstehen!

PS: Lustig, dass Microsoft selbst eine Variable mit == true prüft in diesem Beispiel...

4.931 Beiträge seit 2008
vor 4 Jahren

Ich sehe jetzt erst, daß folgender Code in dem Beispiel völlig sinnlos ist (nicht nur die Abfrage auf true):


if ((CredentialCheck.Checked == true) && (tabControl1.SelectedTab == tabPage2))
{
    tabControl1.SelectedTab = tabPage2;
}

!!??