Steuerelemente ein- und ausblenden


CopWorker

Mitglied
Hallo zusammen,

habe mal wieder eine Eigenheit in Windows Forms entdeckt.

Zustand:
In einem Dialogfenster sind mehrere Steuerelemente.
Jeweils eine Textbox welche einen Verzeichnispfad anzeigen soll und
ein Label welches zur Textbox gehört.


Jetzt will ich diese Steuerelemente per Button Klick ein- und ausschalten, je nach Bedarf.
Hierfür habe ich eine Funktion erstellt "public bool ShowPathesAndLabels(bool BState)".
Der Übersichtlichkeit halber habe ich nur 2 Textbox-Label Paaren aufgeführt.

Erst schalte ich die Steuerelemente in der "Form-Load Methode" mit dem Aufrufen der Funktion ShowPathesAndLabels(true) sichtbar, dann funktioniert dies.
Schalte ich die Steuerelemente mit dem Aufrufen der Funktion (Übergabeparameter "false") unsichtbar, dann funktioniert dies auch.
Schalte ich die Steuerelemente mit dem Aufrufen der Funktion (Übergabeparameter "true") wieder sichtbar, dann funktioniert dies nicht mehr.
Auch ein Aufruf von "this.Update()" ändert nichts an der Situation.

Nachfolgen der ButtonClick Event.

C#:
public bool BExpanded = false;

private void btExpand_Click(object sender, EventArgs e)
{
    BExpanded = BExpanded ? false : true;
    ShowPathesAndLabels(BExpanded);
}

Nachfolgend die Funktion mit dem Status der Steuerelemente als Übergabeparameter
C#:
public bool ShowPathesAndLabels(bool BState)
{
    bool BRet = false;

    //Pfad zur Anwendung
    tbAppPath.Visible = BState;
    lbAppPath.Visible = BState;

    //Pfad zu den Benutzereinstellungen
    tbUsrSettingPath.Visible = BState;
    lbUsrSettingPath.Visible = BState;

    return BRet;
}

Das ganze habe ich auch schon mit den Steuerelement Funktonen z.Bsp.: tbUsrSettingPath.Show(); und tbUsrSettingPath.Hide(); ausgeführt.
Geht auch nicht.

Habe ich etwas nicht beachtet?

vielen Dank
CopWorker
 

Spyke

Premium-User
Wenn ich dich richtig verstanden habe ist dies nicht der richtige Quellcode?
Dieser kurze Snippet sollte funktionieren.
 

CopWorker

Mitglied
Hallo zusammen,

ich bin noch mal an das Problem rangegangen.
Was ich übersehen habe:
Die Steuerelemente "Textbox" und "Label" liegen in einer "Groupbox" drin.
Die wird ebenfalls ".visible = false" geschaltet.
Danach lassen sich alle Steuerelemente welche innerhalb dieser "Groupbox" liegen
nicht mehr auf auf ".visible = true" setzen solange die "Groupbox" noch ".visible = false" ist.
Da ich nicht aus der C# Welt komme sondern aus C++ AnsiC und C++ MFC kenne ich
diese Problem so nicht. Da werden doch alle Steuerelemente gleichrangig behandelt.

Aber trotzdem vielen Dank für eure Hilfe.
Problem gelöst.

Grüße von CopWorker
 

Neue Beiträge