Listview transparente

boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005 - 18 févr. 2005 à 11:48
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005 - 24 févr. 2005 à 14:07
Salut!!
Bon, alors voilà j'ai un petit problème.....J'ai une WinForm avec une background image. Dans cette form, j'ai un panel transparent qui contient une listView. Comment faire pour que cette listView soit elle aussi transparente? Merci d'avance!!!!

10 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 févr. 2005 à 13:35
Voici peut-etre une piste :



class TransparentListView : ListView

{

public TransparentListView()

{

}



override protected CreateParams CreateParams

{

get

{

CreateParams cp = base.CreateParams;

cp.ExStyle |= 0x20;

return cp;

}

}



override protected void OnPaintBackground( PaintEventArgs e )

{

}

}


Mx
0
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005
18 févr. 2005 à 15:21
Merci pour cette piste, je vais voir ce que je peux faire.....
0
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005
22 févr. 2005 à 12:54
Re...
Bon alors je croyais avoir résolu mon problème de listView Transparente en faisant un override de la méthode WndProc et de la propriété BackColor :



public
override
Color BackColor


{



get


{



return
base.BackColor;


}



set


{



if (
value ==
Color.Transparent)



this.SetStyle(
ControlStyles.UserPaint |
ControlStyles.SupportsTransparentBackColor,
true);


BackColor =
value;


}


}



protected
override
void WndProc(
ref
Message m)


{



base.WndProc(
ref m);



if (m.Msg == 20 )


{



this.SetStyle(
ControlStyles.OptimizedDoubleBuffer,
true);



this.SetStyle(
ControlStyles.UserPaint,
true);



this.SetStyle(
ControlStyles.SupportsTransparentBackColor,
true);



Graphics g =
Graphics.FromHdcInternal(m.WParam);



this.OnPaintBackground(
new
PaintEventArgs(g,
this.ClientRectangle));


g.Dispose();


// this.SetStyle(ControlStyles.UserPaint |ControlStyles.SupportsTransparentBackColor, false);



return;


}

Ca compile bien mais au moment ou je veux changer le backColor de ma ListView il me dit que c'est impossible, à cause d'une StackOverflowException......Je vois pas d'où ça peut venir.....Vous pouvez m'aider un peu sur ce coup-là aussi??? Merci d'avance!!!!!
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 13:04
Il y a un StackOverflowException parce que le "Set" de ton accesseur tourne en boucle !

Jvais essayer de voir ce qu'il se passe

Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 13:07
Et c'est logique:



Quand dans le set tu fais "BackColor = value;" ca va rappeler la
méthode set, qui va la rappeler, qui va la rappeler... Et puis hop,
StackOverflow ;)


Mx
0
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005
22 févr. 2005 à 13:36
Ok, j'avais pas capté ça...le coup du truc en boucle....mais alors comment je peux faire pour qu'il tourne plus en boucle?? Suis un petit peu larguée sur ce coup là.....
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 13:44
private Color tempColor,

public

Color TempColor

{


set


{

if (
value ==
Color.Transparent)



this.SetStyle(
ControlStyles.UserPaint |
ControlStyles.SupportsTransparentBackColor,
true);





BackColor = value
;

}

}



Et tu changes ton BackColor via TempColor

Est-ce que ca pourrait marcher ?

Mx
0
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005
23 févr. 2005 à 14:17
Merci grandement....Ca marche, ma listview est bien transparente....Peut être trop même, vu que maintenant quand j'y ajoute des ListItems (c'est quand même le principe de la listView, contenir des items......) bé ils sont bien présents mais pas affichés à l'écran.....Une autre idée de génie pour me sauver la vie????
Merci d'avance (encore une fois......)
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
23 févr. 2005 à 16:21
Ouille ^^



Bah, la comme ca je vois pas trop ce qui peut clocher... :/

Tu as pas overridé le OnPaint, ou je ne sais pas quoi, qui génerait l'affichage ?

Mx
0
boulmagic Messages postés 7 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 5 avril 2005
24 févr. 2005 à 14:07
Bon alors, je viens d'étudier la question, et non ke ,'pverride aucune méthode...le seul code que j'ai est celui que j'ai filé....Mais il veut pas m'afficher les items de ma liste....
Comprend pas.....surtout qu'ils sont bien présents mes items!! Je peux les compter.....
Heeeeeeeeeeeeeeeeeelp
0
Rejoignez-nous