none
Multiplicacion de 2 listbox RRS feed

  • Pregunta

  • Buenas, tengo el siguiente formulario

    este es mi formulario ventas, el formulario hace lo siguiente, cuando selecciono un articulo como puede ser: libro $39 y escribo una cantidad que podria ser 3, cuando le doy añadir al carrito, cada articulo se me ba a añadir en su respectivo listbox, el problema esta en calcular el valor, en el boton tengo el siguiente codigo que me permite calcular el precio total de los articulos partiendo del caracter "$"

    private void button_calcular_valor_Click(object sender, EventArgs e)
            {
                label_total_venta.Text = listBox_carrito.Items.OfType<string>().Sum(x => Convert.ToInt32(x.Substring(x.IndexOf("$")+1))).ToString();
            }

    como podria a ese codigo implementarle que me multiplique la cantidad y el resultado mostrarlo en el label total venta y que en el label cantidad me muestre la cantidad total de los articulos que fueron vendidos.

    otro problema que estoy teniendo es que si a la cantidad le agrego un valor de 10 y selecciono un articulo, al momento de añadirlo al carrito, no se me agrega la cantidad 10 sino me agrega la cantidad 1, solo me toma valores desde 1-9, porque?

    espero me puedan ayudar, gracias

    miércoles, 14 de septiembre de 2016 0:34

Respuestas

  • Hola padermo,

    [-] ... como podria a ese codigo implementarle que me multiplique la cantidad y el resultado mostrarlo en el label total venta ....

    Ese código lo que hace es SUMAR todos los elementos del listBox_carrito (después del símbolo $, suma los números.)

    Lo que deseas hacer es multiplicar el precio x la cantidad y obtener el monto total ?

    Algo como esto ?

    Dónde :

    39 x 10 = 390
    10 x 2  =  20
              410   <-- Total de la venta

    Puedes hacer esto :

     private void button_calcular_valor_Click(object sender, EventArgs e)
            {
                double monto = 0;
                for (int i = 0; i < listBox_carrito.Items.Count; i++)
                {
                    string lbc = listBox_carrito.Items[i].ToString();
                    monto += Convert.ToDouble(lbc.Substring(lbc.IndexOf("$") + 1)) *
                                    Convert.ToDouble(listBox_cantidad.Items[i]);
                }
                label_total_venta.Text = monto.ToString();
            } 


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 14 de septiembre de 2016 2:36

Todas las respuestas

  • Hola padermo

    Noto que existen muchos elementos que se pueden suprimir y hacer mucho más legible su formulario:

    Por ejemplo, la cantidad puede manejarla en un control NumericUpDown  y por defecto establecerlo en el valor 1.

    Los controles artículo, precio y nuevo artículo y todo lo demás de esa sección, al parecer no son necesarios en este formulario.

    Los productos que el usuario seleccione puede ponerlos en un control DataGridView y manejar allí varias columnas donde se refleje la cantidad, nombre del producto, valor unitario y valor total.

    Esto le dará una forma mas consistente de trabajar con datos. El control DataGriedView normalmente es utilizado para estos propósitos.

    Saludos, 



    Miguel Torres


    miércoles, 14 de septiembre de 2016 1:05
  • padermo,

    No entiendo el procedimiento que realizas, de hecho el contener en una lista el nombre del producto, el precio y la moneda es incorrecto (ya te lo había hecho saber) para esos menesteres puedes hacer uso de la clase ListView (cuanto menos). 

    ¿Qué va en el objeto 'listBox_Carrito'? ¿El nombre del producto mas el resultado de multiplicar el precio del producto por la cantidad? ¿Qué va en el objeto listbox_cant?

    miércoles, 14 de septiembre de 2016 1:05
  • en el listbox_carrito ba por ejemplo: libro $39 y en el listbox_cantidad ba si el usuario escribio en el textbox_cantidad que si quiere comprar 3, entonces ese 3 que es la cantidad se mostrara en ese listbox
    miércoles, 14 de septiembre de 2016 1:23
  • Hola padermo,

    [-] ... como podria a ese codigo implementarle que me multiplique la cantidad y el resultado mostrarlo en el label total venta ....

    Ese código lo que hace es SUMAR todos los elementos del listBox_carrito (después del símbolo $, suma los números.)

    Lo que deseas hacer es multiplicar el precio x la cantidad y obtener el monto total ?

    Algo como esto ?

    Dónde :

    39 x 10 = 390
    10 x 2  =  20
              410   <-- Total de la venta

    Puedes hacer esto :

     private void button_calcular_valor_Click(object sender, EventArgs e)
            {
                double monto = 0;
                for (int i = 0; i < listBox_carrito.Items.Count; i++)
                {
                    string lbc = listBox_carrito.Items[i].ToString();
                    monto += Convert.ToDouble(lbc.Substring(lbc.IndexOf("$") + 1)) *
                                    Convert.ToDouble(listBox_cantidad.Items[i]);
                }
                label_total_venta.Text = monto.ToString();
            } 


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 14 de septiembre de 2016 2:36