jueves, 6 de octubre de 2011

Agregar, Eliminar, Maximo, Minimo y Promedio de Listbox en C#

en este codigo explicare como agregar numeros a un listbox desde un  textbox, para despues poder calcular el maximo, minimo, promedio de este array como pueden ver en la figura:
para hacer esto primero validaremos el ingreso de caracteres en el textbox para ingresar solamente numeros, este codigo lo ponen en el evento keypress del textbox
if ((e.KeyChar >= 58 && e.KeyChar <= 127))
{
    MessageBox.Show("Solo se permiten numeros");
    e.Handled = true;
    return;
}
ahora para que el cursor aparezca al cargar el formulario ponemos esta linea en el evento Load del formulario
this.ActiveControl = textBox1;
ahora para agregar los elementos del textbox, y formar un array ponemos este codigo en el evento click:
listBox1.Items.Add(textBox1.Text.Trim());
textBox1.Clear();
this.ActiveControl = textBox1;
con Trim lo que hacemos es borrar los espacios en blanco ahora para eliminar algun numero agregamos este codigo:
if (listBox1.SelectedIndex != -1)
{
    listBox1.Items.Remove(listBox1.SelectedItem);
}
ahora si queremos eliminar todos ponemos esta linea:
listBox1.Items.Clear();
ahora para calcular el maximo de este array, crearemos un for el cual recorra este array y funcione con una variable temporal la cual iniciaremos en cero y la comparamos con el resto del array, y si encuentra el maximo esta variable se actualiza:
Int32 Max = 0;
if (listBox1.Items.Count > 0)
{
    for (int i = 0; i < listBox1.Items.Count; ++i)
    {
        if (Max < Convert.ToInt32(listBox1.Items[i].ToString()))
            Max = Convert.ToInt32(listBox1.Items[i].ToString());
    }
}
textBox2.Text = Max.ToString();
ojo que esta variable se compara con el elemento de la posicion i del listbox por lo que estos valores son de tipo string y tenemos que convertirlos a entero, es por eso el Convert.ToInt32. ahora para hallar el valor minimo del array haremos lo mismo solo que cambiamos el signo <.
Int32 Min = 666666;
if (listBox1.Items.Count > 0)
{
    for (int i = 0; i < listBox1.Items.Count; ++i)
    {
        if (Min > Convert.ToInt32(listBox1.Items[i].ToString()))
            Min = Convert.ToInt32(listBox1.Items[i].ToString());
    }
}
textBox3.Text = Min.ToString();
ojo que puse el min un valor grande porque puede ser que alguien pulse este boton sin llenar el listbox, entonces le aparecera este numero. Lo hice para evitar posibles bugs. Ahora para calcular el promedio de esta pila o array, ponemos este codigo en el evento click del boton
int suma = 0;
Double prom=0;
if (listBox1.Items.Count > 0)
{
    for (int i = 0; i < listBox1.Items.Count; ++i)
    {
        suma += Convert.ToInt32(listBox1.Items[i].ToString());
    }
    prom = suma / listBox1.Items.Count;
}
textBox4.Text = prom.ToString();
espero les haya servido este codigo, voy a poner mas en cuanto tenga tiempo...

1 comentario:

  1. como le puedo poner un tope de máximo de 25 números en la lista

    ResponderEliminar