ListView et composants

yfocal Messages postés 7 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 31 janvier 2005 - 28 janv. 2005 à 16:31
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005 - 2 mars 2005 à 17:13
Bonjour,



peux t-on ajouter des composants dans un item d'une listview autrement que par ListView.Controls.Add() ?



Merci

Yann

6 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
31 janv. 2005 à 13:37
qu'est ce qui te gene dans le add de control ?

::|The S@ib|::
MVP C#.NET
0
yfocal Messages postés 7 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 31 janvier 2005
1 févr. 2005 à 10:07
En fait, je veux ajouter des composants dans des colonnes. Le pb est
que quand je redimensionne les colonnes, les composants ne "bougent
pas". Donc, soit il faut que j'arrive a recuperer l'evenement column
resize pour redessiner les composants, soit j'empeche le
redimensionnement des colonnes.
0
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005
12 févr. 2005 à 04:06
J'ai +- le même problème que toi yfocal, j'ai dérivé mon propre listview afin d'y placer des textbox. Ceci dans le but de pouvoir éditer toutes les collones de mon listview.

Donc comme toi, lorsque je redimentionne une collone mon textbox reste de la même taille.
(je comptais sur le faites qu'il perde le focus, car j'ai un gestionnaire d'événement qui détecte la perte du focus par le textbox. Mais c'est pas le cas, manipulation de la taille des collones ainsi que du scroll ne font pas perdre le focus)
Je comptais utilisé un des deux évenement suivant SizeChanged ou Resize pour régler le problème.

Autre problème maintenant lorsque j'utilise le scroll et que mon textbox est afficher il reste sur place. Comment détecter un mouvement de scroll dans un listview...histoire de de cacher le textbox dés que j'ai un mouvement de scroll.

J'ai chercher un peu et j'ai trouver un moyen via les messages windows en redéfinissant nottament WndProc, existe il une autre solution?

Un Avis sur la question ?
Une tit Piste ?
Un bout de code ?
Tout est le bienvenu! Merci
0
yfocal Messages postés 7 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 31 janvier 2005
1 mars 2005 à 11:25
Salut,

peux-tu m'envoyer le bout de code qui permet d'intercepter les messages Windows, STP ?
Merci
0

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

Posez votre question
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
1 mars 2005 à 11:33
tu overrides le WndProc dans ta form

::|The S@ib|::
MVP C#.NET
0
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005
2 mars 2005 à 17:13
oui, no problemo

Il faut décaré ceci pour commencer, enfin pour l'exemple ci-dessous du moins:

private struct NMHDR


{


public IntPtr hwndFrom;


public Int32 idFrom;


public Int32 code;


}







private const int WM_HSCROLL = 0x0114;


private const int WM_VSCROLL = 0x0115;


private const int WM_MOUSEWHEEL = 0x020A;


private const int WM_NOTIFY = 0x004E;


private const int HDN_FIRST = -300;


private const int HDN_BEGINDRAG = (HDN_FIRST-10);


private const int HDN_ITEMCHANGINGW = (HDN_FIRST-20);





....


protected override void WndProc(ref Message m)


{


switch(m.Msg)


{


case WM_HSCROLL:





break;


case WM_VSCROLL:





break;


case WM_NOTIFY:


NMHDR h = (NMHDR)m.GetLParam(typeof(NMHDR));


if (h.code == HDN_ITEMCHANGINGW )


// changement de la largeur d'une colonne


break;


}


base.WndProc(ref m);





}






Voilà, donc moi dés que j'ai un mouvement de scroll ou un changement de la taille d'une colonnes je fait perdre le focus a mon textbox...


Maintenant j'ai encore un autre petit bug, qui est le suivant : lorsque mon scroll est à droite par exemple, donc lorsque ma première colonnes n’est pas totalement visible (on ne voit que la fin) et bien si j’édite cette colonnes le textbox se pose à cheval sur les 2 premières colonnes, c’est logique car il faut que je ramène le scroll à fond à gauche avant de placer mon textbox.





(Je l’avais un peu laissé de côtés mais je vais m’y remettre)





P.S.: Si cela t'intéresse fait le moi savoir je te tiendrais au courant. Je pense qu’une fois que j’aurais fait cella j’aurais un beau ptit listview éditable sur toutes les colonnes, hmm, enfin j’espère .





Pour finir si quelqu'un a un truc mieux à proposer ou une critique je suis bien évidement preneur. Hmm, si c'est pour me dire d'utiliser un datagrid c pas la peine .
0
Rejoignez-nous