Mostrar elemento seleccionado en listbox

Iniciado por rigorvzla, 7 Agosto 2020, 03:15 AM

0 Miembros y 1 Visitante están viendo este tema.

rigorvzla

Hola a todos, paso por aqui con un problemilla que no le encuentro solucion, ocurre que tengo un listobox con una cantidad de datos, que ocurre , al yo seleccionar un elemento por codigo (no haciendo click) usando la propiedad SelectIndex , me selecciona el elemento, si muy bien, el problema radica en que cuando el elemento que selecciono esta fuera de vista por ejemplo es el penultimo yo debo bajar con la barra de scroll para poder verlo seleccionado, lo que necesito y no se hacerlo , es que al ser seleccionado el elemento, la vista del listbox valla de manera automatica y me muestre el elemento seleccionado.

Espero puedan ayudarme y de antemano gracias.

EdePC

Acabo de probar lo siguiente y no he tenido problemas, quizá tengas que poner un ejemplo que replique tu problema...

Código (csharp) [Seleccionar]
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            listBox1.Items.Add("cero");
            listBox1.Items.Add("uno");
            listBox1.Items.Add("dos");
            listBox1.Items.Add("tres");
            listBox1.Items.Add("cuatro");
            listBox1.Items.Add("cinco");
        }

        private void button1_Click(object sender, EventArgs e) {
            listBox1.SelectedIndex = 5;
        }
    }
}


- Lo pruebo dándole click al botón y automáticamente me selecciona el "cinco" desplazando el ScrollBar automáticamente. Estoy usando Visual C# 2008 Express.

tincopasan

no has puesto que lenguaje estás usando, ni una línea de código, ahora suponiendo que sea vb.net:
Código (vbnet) [Seleccionar]

ListBox1.SetSelected(9, True)' donde 9 puede ser reemplazado obviamente por una variable

rigorvzla

cierto el lenguaje es C# , WPF
el detalle es que cuando coloco seteo el index , lo selecciona mas no, me muestra el lugar, me explico mejor, el listbox tiene 10 elementos, pero el tamaño solo muestra 5 , si selecciono por, selectindex el elemento 9, en efecto lo selecciona, mas NO me muestra de maera visible en la lista el elemento, osea esta seleccionado pero yo debo de bajar con el scroll hasta llegar al elemento seleccionado y es estop lo que necesito que se haga de manera automatica

EdePC

No uso WPF porque consume tres veces más recursos que Windows Forms :xD, aunque el primero es más "flexible".

Pues si que es cierto, WPF no desplaza automáticamente el Scroll, esto se tiene que hacer manualmente al final:

Código (csharp,2) [Seleccionar]
listBox1.SelectedIndex = 5;
listBox1.ScrollIntoView(listBox1.SelectedItem);

rigorvzla

muchas gracias , investigando di con la misma solucion EdePC , no saben el tiempo que estuve buscando esta solucion, muy agradecido por la ayuda prestada.  ;-)  ;-)  ;-)

EdePC

Visual Studio es de los mejores IDEs que hay, basta con poner un punto e Intelisense autocompleta con lujo de detalles, basta con ir bajando y leyendo uno a uno. Mira que yo ni enterado de esta posibilidad, solo puse ListBox1. y empecé a leer ... Y eso que yo manejo el Visual Studio 2008 Express XD.

Serapis

en C# al igual que en VB, existe la propiedad de lectura y escritura 'Topindex', para el listbox, que señala el índice del elemento que aparece en primera línea del listbox.
Naturalmente ese índice solo puede ser mantenido (se trunca en caso contrario) si hay suficientes elementos para rellenar por completo la vista del listbox... es decir si solo hay 5 elementos y en la vista caben 15, topindex solo puede ser 0, igualmente si hay 40 elementos y la vista aloja 15, el topindex, solo puede elegirse en el rango 0-(39-15) = 0-24

Código (csharp) [Seleccionar]

listBox1.TopIndex = 24;
listBox1.TopIndex = listBox1.SelectedIndex;