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 |
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 |
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 |
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