Winforms listbox – Adding new item replaces the previous

  Uncategorised

so, im trying to make a queue (im a student, first year) in winforms. The problem is, whenever i add a new item to my listbox, the previous items are replaced. https://imgur.com/tuxoFKP
if you need any kind of translation, just let me know.

Im know im dumb, but if i can get anny help, i will be forever grateful.

Here’s the code:

namespace Trabajo_Practico_N1
{
    public partial class Form1 : Form
    {
        Queue cola = new Queue();
        public Form1()
        {
            InitializeComponent();

            txtIN.MaxLength = 8;
        }

        private void btnCargar_Click(object sender, EventArgs e)
        {
            if (txtIN.Text.Length == 7 && cmbTipo.SelectedItem != null)
            {
                Nodo nodo = new Nodo();
                nodo.Código = Convert.ToInt32(txtIN.Text);
                cola.Enqueue(nodo);
                MostrarCola(); 
            }
            else if (txtIN.Text.Length != 7)
            {
                MessageBox.Show("Los códigos de facturas tienen 7 dígitos");
            }
            else
            {
                MessageBox.Show("Seleccione un servicio");
            }
        }

        private void btnBorrar_Click(object sender, EventArgs e)
        {
            if (cola.Vacía())
            {
                MessageBox.Show("No se han encontrado facturas");
            }
            else
            {
                cola.Dequeue();
                MostrarCola();
            }
        }

        private void MostrarCola()
        {
            lstBox1.Items.Clear();

            if (cola.Tope != null)
            {   
                MostrarNodoEnPantalla(cola.Tope);
            }    
        }

        private void MostrarNodoEnPantalla(Nodo nodo)
        {
            if (nodo != null)
            {
                if (cmbTipo.SelectedItem.ToString() == "Luz")
                {
                    lstBox1.Items.Add("Código: " + nodo.Código + "     Importe:  $" + factura.GetImporteLuz() + "     Servicio: " + cmbTipo.SelectedItem);
                }
                else if (cmbTipo.SelectedItem.ToString() == "Agua")
                {
                     lstBox1.Items.Add("Código: " + nodo.Código + "     Importe:  $" + factura.GetImporteAgua() + "     Servicio: " + cmbTipo.SelectedItem);
                }
                else
                {
                    lstBox1.Items.Add("Código: " + nodo.Código + "     Importe:  $" + factura.GetImporteGas() + "     Servicio: " + cmbTipo.SelectedItem);
                }
            }

            if (nodo.Siguiente != null)
            {
                MostrarNodoEnPantalla(nodo.Siguiente);
            }
        }        

Source: Visual Studio Questions

LEAVE A COMMENT