Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Listboxs sincronizados (http://foros.zackyfiles.com/showthread.php?t=456019)

DVB 14/07/2006 00:22

Listboxs sincronizados
 
Hola aprovechando que ahora tenemos foro de programacion :D os voy a plantear un problema que tengo en un proyecto que estoy desarrollando en C# .Net.

Tengo 3 listbox y un vscrollbar independiente de los 3 listbox. Pues quiero que el vscrollbar independiente mueva los 3 listbox a la vez (el scroll, vamos)

he subido el archivo a http://www.multiupload.com/?d=JF08Z0PZ para que entendais mejor lo que os digo. El proyecto esta echo en .net 2003

Gracias de antemano.
Saludos

Efirenet 14/07/2006 21:08

Hola, se puede simular scroll seleccionando un item del listBox que no está visible. Así, si el listBox está mostrando los items del 1 al 10 y le das al botón de bajar del ScrollBar, pues selecciona en ese listbox el elemento 11. Con eso consigues que haga scroll hacia abajo. Hacia arriba es parecido: si estás mostrando del 5 al 15 y le das arriba, pues selecciona el 4 y verás un scroll hacia arriba.

Para cambiar el item seleccionado del listbox usa la propiedad SelectedIndex y si no quieres que aparezca seleccionado el item (para que de aspecto de que estás pulsando los botones), usa el método SelectedIndex poniendo a false el item que seleccionaste antes.

Un saludo

ElZazu 15/07/2006 12:12

Yo creo que es incluso más sencillo de implementar ese efecto.

En los [B]listBox [/B]existe la propiedad [B]TopIndex [/B]que indica el primer elemento que se visualiza en la parte de arriba, simplemente hay que 'sincronizar' esta propiedad del [B]listBox [/B]con la propiedad [B]Value [/B]del [B]vScrollBar[/B].

Es decir:

[CODE]private void vScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
{
this.listBox1.TopIndex=this.vScrollBar1.Value-1; // -1 ya que el Index del listBox empieza en 0 y el Value del vScrollBar en 1
this.listBox2.TopIndex=this.vScrollBar1.Value-1;
this.listBox3.TopIndex=this.vScrollBar1.Value-1;
}[/CODE]

Tambien habría que modificar los valores del [B]vScrollBar[/B], y ponerle el [B]Minimun [/B]a 1 (desplazamiento corto) y el [B]Maximun [/B]a 20 (osea, a el número de valores que tenga el [B]listBox[/B]), con lo que añadiríamos este código al detras del [B]for [/B]del [B]Load [/B]del formulario:

[CODE]this.vScrollBar1.Maximum=this.listBox1.Items.Count-1; // Numero de elementos del listBox
this.vScrollBar1.Minimum=1;[/CODE]

Saludos

DVB 17/07/2006 20:12

Gracias de nuevo
 
Cuando ya tenia implementada la solucion que aportaba Efirenet he leido la de ElZazu y se me han saltado las lagrimas :D que solucion mas ingeniosa y sencilla.

Saludos


La franja horaria es GMT +2. Ahora son las 08:59.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate