Dies liegt daran, wenn ich mich richtig erinnere, eine Hintergrundfarbe der Transparent-Einstellung (der tatsächliche Wert null ist, nicht wahr?) Ist nicht wirklich transparent Was Windows tut, ist, dass es die Hintergrundfarbe des übergeordneten Containers des Steuerelements anschaut und die Hintergrundfarbe des Steuerelements darauf einstellt.
Sie können dies vor allem mit Panels sehen. Ohne Inhalt sollten Panels, die auf Transparent gesetzt sind, Sie dahinter sehen lassen, richtig? Falsch. Wenn Sie ein Panel auf eine Reihe von, sagen wir, Textfeldsteuerelementen setzen und das Panel auf Transparent setzen, können Sie nicht sehen e die Textfelder dahinter.
Um echte Transparenz zu erhalten, müssen Sie OnPaintBackground für das fragliche Steuerelement überladen und im Prinzip absolut nichts tun (Rufen Sie den base.OnPainBackground nicht auf!) ... Es gibt mehr als das, wahrscheinlich, aber hier ist ein Beispiel für eine funktionierende TransparentPanel Kontrolle übernehmen wir hier verwenden:
public class TransparentPanel : System.Windows.Forms.Panel
{
[Browsable(false)]
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
// Do Nothing
}
}
wir haben diese Klasse verwendet haben erfolgreich wirklich transparente Platten in der vergangenen Windows Forms-Anwendungen zu erstellen. Wir haben es als Hack verwendet, um das Problem zu beheben, dass das Kontextmenü "Rechtsklick-Kontextmenü über Schaltflächen" erscheint.
Dies ist ein wenig schwer zu folgen. Ich denke, wenn Sie es anders erklären, können Sie einige Antworten bekommen. –