Demande d'aide : problème picture box/listbox

guruthor Messages postés 8 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 16 mai 2011 - 1 mars 2011 à 00:53
guruthor Messages postés 8 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 16 mai 2011 - 1 mars 2011 à 15:49
Bonjour tous,

je suis débutant en C# (et en C++ je suis pas vraiment meilleur) et j'aimerais développer un composant mais je ne sais comment faire.
Je m'explique :
j'ai une application avec côte à côte une listbox et une picture box
les deux contrôles sont de même hauteur

le nombre d'éléments dans la listbox peut augmenter ou diminuer, quitte à faire apparaitre un ascenseur
en gros j'aimerais pouvoir dessiner des choses en face de chaque ligne et que :
1. d'une part quand j'ajoute des éléments à la listbox, la hauteur de la picture box augmente (quitte à ce qu'apparaisse un ascenseur)
2. que lorsque je me "déplace" dans la listbox, c'est à dire lorsque je manipule l'ascenseur, la picturebox reste "en face" de la textbox pour que les dessins que je trace dessus reste "en face" des lignes concernées

pour le point 1 : en gros, il me suffit d'ajouter à picturebox1.size le nombre de pixels d'une "ligne" de la listbox, mais après je ne sais pas comment lié l'ascenseur de la listbox à celui du "conteneur" de la picture box (je pense qu'il faut mettre la picture box dans un conteneur de taille variable)
il faudrait récupérer l'évènement "déplacement d'ascenseur" de la listbox et le lier au déplacement de l'ascenseur du conteneur de la picture box.

bref si vous avez des idées ?

Losformen

2 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
1 mars 2011 à 12:03
Bonjour,

C'est effectivement un besoin très compliqué que tu nous exposes là.
Peux-tu nous donner plus détail pour que l'on visualise la chose ?
Pourquoi veux-tu que ta "listbox" fasse agrandir la picturebox ? (quel est le but derrière).

Pourquoi ne pas partir vers une solution en WPF ? (XAML)
J'ai ouïe dire que WPF permettait de faire des trucs touchy de ton style.
Ainsi, je te propose de mettre des images directement dans chaque item ton listbox (de ce que j'ai vu, cela me paraît facilement réalisable avec WPF car on peut inclure des contrôles dans des contrôles à l'infini [et difficile voire impossible en WinForm]).
Cela te conviendrait-il et couvrerait-il tes besoins ?

Sinon, il te faudra effectivement coder à la main. Pour ce faire, voici un événement qui pourrait t'intéresser: ScrollBar.Scroll.

Bon développement,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
guruthor Messages postés 8 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 16 mai 2011
1 mars 2011 à 15:49
Voici un imprimé d'écran :

on notera
- la listbox à gauche en blanc
- le panel en gris foncé contenant la picture box en bleu




en gros j'ai deux ascenseurs et je voudrais les "synchroniser"
c'est à dire qu'ils soient toujours au même niveau car je veux que ce que je dessine sur la picturebox (là j'ai fait des traits pour simplifier) soit "en face" de l'élément correspondant de la listbox

Le problème de l'agrandissement c'est pas grave, j'arrive à gérer. Ma question porte plus (et c'est une question générale) sur "comment synchroniser 2 ascenseurs qui sont sur 2 controls différents"
En gros :
a. comment connaitre "l'état" du premier ascenseur : descendu à 50% par exemple
b. comment régler "l'état" du deuxième, exemple : je veux qu'il soit à mi-chemin

WPF ? connait pas :~(
je vais me renseigner mais là, maintenant que mon truc est codé...

Le scrollbar event : oui pourquoi pas, sauf que listbox ne le déclenche pas !!
du coup je suis en train de chercher comment intercepter tout de même le message. Je crois qu'il faut "overridé" la fonction d'interception des messages. Ca je peux encore le faire, mais ça ne me dit toujours pas comment régler le "niveau" de l'autre ascenseur.

merci par avance !
0
Rejoignez-nous