En effet, si je me souviens bien, définir une couleur de fond de transparent (sa valeur réelle est nulle, non?) N'est pas vraiment transparent Ce que fait Windows est de regarder la couleur d'arrière-plan du contrôle du conteneur parent et de définir la couleur de fond des contrôles à cela
Vous pouvez voir ceci se produire surtout avec des panneaux.Sans contenu, les panneaux réglés sur Transparent devraient vous laisser voir derrière eux, Si vous placez un panneau au-dessus d'un groupe de commandes de zone de texte, par exemple, et réglez le panneau sur Transparent, vous ne pourrez pas e les zones de texte derrière elle. Au lieu de cela, pour obtenir une transparence réelle, vous devez surcharger OnPaintBackground pour le contrôle en question et, essentiellement, ne rien faire (N'appelez pas le base.OnPainBackground non plus!) ... Il y a plus que ça, probablement, mais voici un exemple d'un contrôle TransparentPanel de travail que nous utilisons ici:
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
}
}
nous avons utilisé cette classe pour créer avec succès des panneaux transparents vraiment dans le passé Windows Forms applications. Nous l'avons utilisé comme un hack pour corriger le problème du "menu contextuel du clic droit sur le bouton".
Ceci est un peu difficile à suivre. Je pense que si vous l'expliquez différemment, vous obtiendrez peut-être des réponses. –