Box et position

Résolu
mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010 - 21 avril 2009 à 14:57
mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010 - 22 avril 2009 à 10:21
Bonjour,

Je travail sur une listview contenant 3 colonnes et lors d'un double clic sur une ligne,  je crée une box (numericUpDown / textBox / listBox) selon l'information.
Mon problème est le suivant, lorsque ma listview dépasse la taille de la fenêtre, une scroll horizontale apparait.
Donc lorsque je me déplace de gauche à droite, ma box aussi. y aurait t-il un moyen de garder la box au même endroit.

Deux image pour illustrer :
Sans le scroll ---/--- Avec le scroll (et un petit déplacement)

2 réponses

mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010
22 avril 2009 à 10:21
J'ai trouvé:

Sujet:
"il faut ré-écrire une Listview. Mais de toutes facons, il semble que ce
soit la seule solution possible vu que ce controle n'existe pas dans les
listview par défaut."

En implémentant la listview du code fournis ici
on fait la gestion de la postion avec ces nouveaux events
this.HScrollChanged += new ScrollEventHandler(this.liste_HScrollChanged);
this.VScrollChanged += new ScrollEventHandler(this.liste_VScrollChanged);

le code des evenements:

void liste_VScrollChanged(object sender, ScrollEventArgs e)
{
   positionX = ...
   positionY= ...
   if (e.OldValue - e.NewValue > 0) // vers le haut
       editBox.Location = new System.Drawing.Point(positionX, positionY + e.NewValue);
   else // vers le bas
       editBox.Location = new System.Drawing.Point(positionX, positionY - e.NewValue);
}

void liste_HScrollChanged(object sender, ScrollEventArgs e)
{
   positionX = ...
   positionY= ...
   if(e.OldValue - e.NewValue > 0)// vers la gauche
      editBox.Location = new System.Drawing.Point(positionX + e.NewValue, positionY);
   else // vers la droite
      editBox.Location = new System.Drawing.Point(positionX - e.NewValue, positionY);
}
3
mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010
21 avril 2009 à 16:53
Je rajoute, que c'est pareil pour les déplacement horizontaux, la box apparait donc hors champs
0
Rejoignez-nous