Usuario
listbox eliminar texto superior al momento de capturar uno nuevo.?

Pregunta
-
Buenas.
Quisiera saber como programar el listbox en visual basic para al momento de capturar un nuevo archivo se elimine automaticamente el de arriba, o condicionarlo que el listbox acepte tener 3 textos y al momento de capturar el cuarto ,,,le elimine el primero..?
condiciono que el listbox ----If ListBox1.Items.Count > -2 Then
enfoco --- ListBox1.Focus()
selecciono el 1ro --- ListBox1.SelectedIndex = 0
elimino ------ ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
End Ifpero no me da resultado.
gracias..!!!
- Cambiado webJoseModerator domingo, 4 de marzo de 2018 2:11
Todas las respuestas
-
Hola listbox eliminar texto superior al capturar nuevo,
Aunque el la pregunta debió ser publicada en el foro de VB.Net y no de C#.
[-] ...listboc en visual basic l momento de capturar un nuevo archivo se elimine automaticamente el de arriba, o condicionarlo que el listbox acepte tener 3 textos y al momento de capturar el cuarto ,,,le elimine el primero..
¿Quieres que se elimine siempre el primer elemento cuando sobrepase los 3 elementos en el ListBox?
En caso sea correcto podrías hacer una simple validación verificando si hay menos de 3 elementos o más en el ListBox y dependiendo del resultado aplicar la lógica necesaria. En este ejemplo utilizamos el método Insert(indice, contenido) para posicionarlo como primer elemento.
'Si hay menos de 3 items agregamos If ListBox1.Items.Count < 3 Then ListBox1.Items.Add(txtDato.Text) Else 'Si hay 3 elementos (o más) 'Elimina el elemento de la posición 0 (primer elemento) ListBox1.Items.RemoveAt(0) 'Insertamos el nuevo elemento en la posición 0 para que 'sea el primer elemento ListBox1.Items.Insert(0, txtDato.Text) End If 'Limpiamos el contenido del TextBox txtDato.Text = String.Empty
Resultado :
Sin embargo, si lo que quieres es eliminar
Private _index As Integer = 0 Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 'Si hay menos de 3 elementos If ListBox1.Items.Count < 3 Then 'Agregamos el item al ListBox ListBox1.Items.Add(txtDato.Text) Else 'Si es igual a 3 o mayor ListBox1.Items.RemoveAt(_index) ListBox1.Items.Insert(_index, txtDato.Text) 'Incrementamos en 1 _index += 1 'Si el indice es múltiplo de 3 inicializamos en 0, 'ya que el máximo índice debe ser 2 If _index Mod 3 = 0 Then _index = 0 End If End If txtDato.Text = String.Empty End Sub
Resultado :
En caso no sea lo que estás buscando agradecería una mayor explicación para poder brindarte una solución acertada :) .
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -
Otra opción es mantener los datos en una variable externa y asignar esos datos a través de la propiedad DataSource del ListBox.
Precisamente en .NET tienes la clase Queue que mantiene una colección de elementos en una estructura FIFO (First In First Out).
Así, si te creas una variable de tipo Queue para almacenar los datos:
Private ReadOnly _data As new Queue(Of String)
A la hora de añadir nuevos elementos simplemente tendrías que añadirlo (Enqueue), comprobar si el tamaño de la colección es mayor que 3 y, en tal caso, sacar un elemento (Dequeue).
A continuación asignas los datos al ListBox:
_data.Enqueue(itemToAdd) If (_data.Count > 3) Then _data.Dequeue() ListBox1.DataSource = _data.ToList()
Píldoras .NET
Artículos, tutoriales y ejemplos de código .NETPíldoras JS
Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...- Propuesto como respuesta webJoseModerator domingo, 4 de marzo de 2018 2:11