Wie ermittle ich die Sichtbarkeit eines Steuerelements?

8

Ich habe eine TabControl , die mehrere Registerkarten enthält. Jede Registerkarte hat eine UserControl darauf. Ich möchte die Sichtbarkeit eines Controls prüfen x auf UserControl A von UserControl B . Ich dachte mir, dass x.Visible von UserControl B gut genug wäre. Es stellte sich heraus, dass false im Debugger angezeigt wurde, obwohl ich explizit true festlegte und es nie geändert wurde. Dann lese ich auf MSDN für Control.Visible , dass:

  

Auch wenn "Sichtbar" auf "Wahr" gesetzt ist, ist das Steuerelement für den Benutzer möglicherweise nicht sichtbar, wenn es hinter anderen Steuerelementen verborgen ist.

Zu meiner Überraschung wird das nicht funktionieren. Jetzt frage ich mich, wie ich feststellen kann, ob das Steuerelement x von einem anderen UserControl sichtbar ist. Ich möchte, wenn möglich, vermeiden, einen Boolean zu verwenden. Ist jemand darauf gestoßen und hat eine Lösung gefunden?

Hinweis: Es scheint auch, dass Control.IsAccessible in dieser Situation falsch ist.

    
SwDevMan81 12.05.2011, 15:20
quelle

2 Antworten

7

Leider bietet das Steuerelement nichts öffentliches, was Ihnen erlaubt, dies zu überprüfen.

Eine Möglichkeit wäre, etwas in der Eigenschaft "Tag" der Steuerelemente zu setzen. Der Zweck des Tags besteht darin, Benutzerdaten mit dem Steuerelement zu verknüpfen. Es kann also alles sein, nicht nur ein Boolescher Wert.

Hier ist das Tag-Eigenschaftendokument

Wenn Sie den Brute-Force-Weg wirklich wollen, können Sie Reflection verwenden und GetState (2) aufrufen:

%Vor%     
Liz 12.05.2011, 15:41
quelle
0

Bitte versuchen Sie Folgendes:

%Vor%     
Daniel Mošmondor 12.05.2011 19:54
quelle