none
listbox eliminar texto superior al momento de capturar uno nuevo.? RRS feed

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

    pero no me da resultado.

    gracias..!!!

    sábado, 3 de marzo de 2018 0:42

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

    sábado, 3 de marzo de 2018 3:23
  • 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 .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 3 de marzo de 2018 11:36