2014-10-16 25 views
7

Mein Hauptformular hat einen horizontalen splitcontainer auf es. Der obere Teil enthält ein Objektlistenansicht-Steuerelement gefunden here.C# winforms transparent Formular Overlay Problem

Ich verwende Code aus einem vorherigen transparenten C# Overlay-Formular answer.

Mein Problem scheint etwas mit der Objektlistenansicht zu tun zu haben. Unter Verwendung des Codes aus der obigen Antwort deckt das transparente Formular alle Steuerelemente perfekt ab, wenn es jedoch in die Objektlistenansicht gelangt, scheint es über dieses spezifische Steuerelement dunkler zu werden.

Splitcontainer overlayed

Wenn ich das transparente Overlay schließen und eine leere Platte in den Vordergrund bringen, wenn ich die transparente Overlay öffnen, zeigt es immer noch diese dunkler Abschnitt, als ob die Objektlistenansicht noch sichtbar ist.

Blank panel overlayed

Ich möchte zunächst wissen, warum dies geschieht. Aber ich würde auch gerne wissen, wie ich das beheben kann, so dass die Überlagerung konsistent ist.

  • Falls Sie wollen, dies zu testen, habe ich ein einfaches Projekt, das Problem here

So zu replizieren zu zeigen, was passiert ...

  1. Ziehen Sie den Splitcontainer nach unten ein wenig und klicken Sie auf den Overlay-Button.

  2. Schließen Sie das Overlay, indem Sie in das White Panel klicken. Klicken Sie auf die Schaltfläche Leeres Feld und dann erneut auf die Schaltfläche Überlagern.

Bitte beachten Sie, dass in den Plexiglas-Klasse, es ist ein Panel als Parameter nur für die Zwecke dieser Demonstration nehmen, in meinem aktuellen Projekt, nimmt es die Hauptform als Parameter.

EDIT

änderte ich die Farbe von dunkelgrau bis weiß und es funktioniert perfekt. Ich bin nicht sicher, warum das Dunkelgrau dieses Problem verursacht hat, aber ich bin zufrieden mit der Art, wie es mit Weiß aussieht, also werde ich dabei bleiben.

+1

Sieht fast so aus, als würde das dritte pary-Steuerelement einen Screenshot an seiner Position erstellen, um einen Puffer für die Notwendigkeit zu erstellen, es neu zu streichen –

+3

Das Steuerelement verwendet den gleichen Trick, GlassPanelForm-Klasse. Die Kombination beißt wahrscheinlich. –

+0

@Hans Passant Irgendwelche Ideen, wie ich das beheben kann? –

Antwort

0

Aus irgendeinem Grund verursachte das Color.DarkGray BackColor-Attribut für das transparente Formular das Problem. Ändern der BackColor zu Color.White behoben.

Dank Patrice Gahide für die Hilfe.

+2

Gern geschehen, mein Teil war nicht so schwer;) Froh, dass du es endlich gelöst hast. –