none
como borrar datos de un array botón limpiar RRS feed

  • Pregunta

  • cordial saludo 

    tengo un formulario donde facturo el pedido de las mesas de un restaurante cada que selecciono un item del combobox esta información va a un array donde se va sumando automáticamente, al terminar la factura quiero que desaparezca esta información para poder realizar otra facturación sin necesidad de cerrar el formulario, en el momento lo tengo que los campos se limpian pero al seleccionar un item del combobox me sale en pantalla la información de la anterior factura. de antemano agradezco su ayuda.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Xml;
    using System.Xml.Serialization;


    namespace Ejercicio_2_02_Caja_Registradora
    {
        public partial class Form1 : Form
        {
            // se crea estructura donde se crean dos variables
            public struct Orden
            {
                public string item;
                public decimal valor;
            }
            
            Orden pedido = new Orden();
            string cuenta = "CUENTA:\n";
            static decimal subtotal;
            static decimal total;
            string InfCliente;

            // este fac es una clase que se uso para la creacion del archivo xml
            Factura fac;

            public Form1()
            {
                InitializeComponent();
            }

            // metodo donde almacena en un array el item y en el otro el valor, tambien muestra lo que imprime el la pantalla 
            public void ObtenerValor(string custOrder)
            {            
                pedido.item = custOrder.Split('$')[0];
                pedido.valor = Convert.ToDecimal(custOrder.Split('$')[1]);
                lstSalida.Items.Add("Valor: " + pedido.valor);            
                InfCliente = "\nCliente: " + txtNombreCliente.Text.ToString() + "\nIdCliente: " + txtNumeroCedula.Text.ToString() +  "\n ";
                cuenta += "\nPedido: " + pedido.item + "\nValor: " + pedido.valor.ToString() + "\nPropina: " + txtPropina.Text + "\n ";            
                suma();            
            }

            // metodo donde se realiza la suma del pedido y se validan unos campos
            private void suma()
            {
                string propina = (txtPropina.Text);

                if (propina == "")
                {
                    propina = "0";
                }
                if (txtNombreCliente.Text == "")
                {
                    MessageBox.Show("el nombre cliente es obligatorio");
                }
                if (txtNumeroCedula.Text == "")
                {
                    MessageBox.Show("el numero de cedula es obligatorio");
                }
                if (cmbMesero.SelectedItem == null)
                {
                    MessageBox.Show("selccione un mesero");
                }
                if(cmbNumeroMesa.SelectedItem == null)
                {
                    MessageBox.Show("selccione la mesa a facturar");
                }
                else
                {
                    subtotal += pedido.valor;
                    total = subtotal + (Convert.ToDecimal(txtPropina.Text));
                    lstSalida.Items.Clear();
                    lstSalida.Items.Add(cmbNumeroMesa.SelectedItem.ToString());
                    lstSalida.Items.Add(cmbMesero.SelectedItem.ToString());
                    lstSalida.Items.AddRange(InfCliente.Split('\n'));
                    lstSalida.Items.AddRange(cuenta.Split('\n'));
                    lstSalida.Items.Add("Subtotal: " + subtotal.ToString(""));
                    lstSalida.Items.Add("Total: " + total.ToString());
                }
                
            }
        
            // metodo donde selecciona un item y su valor de los combobox

            private void changingDropdown(object sender, EventArgs e)
            {
                if (sender == cmbBebidas)            
                    ObtenerValor(cmbBebidas.SelectedItem.ToString());
                else if (sender == cmbMenuPinc)
                    ObtenerValor(cmbMenuPinc.SelectedItem.ToString());
                else if (sender == cmbAperitivos)
                    ObtenerValor(cmbAperitivos.SelectedItem.ToString());
                else
                    ObtenerValor(cmbPostres.SelectedItem.ToString());
            }



            // metodo para borrar los campos del formulario 
            private void btnClear_Click(object sender, EventArgs e)
            {
                lstSalida.Items.Clear();
                this.Controls.Clear(); this.InitializeComponent();
                

            }

            // se programa la accion de guardar la factura en un archivo de texto xml
            private void btnGuardar_Click(object sender, EventArgs e)
            {
                fac = new Factura();

                fac.Mesa = cmbNumeroMesa.Text;
                fac.Mesero = cmbMesero.Text;
                fac.Cliente = txtNombreCliente.Text;
                fac.Identificacion = txtNumeroCedula.Text;
                fac.Pedido = pedido.item;
                fac.Propina = txtPropina.Text;
                fac.Total = total.ToString();

                XmlSerializer serializador = new XmlSerializer(fac.GetType());

                FileStream archivo = new FileStream("factura.xml", FileMode.Create, FileAccess.Write);
                serializador.Serialize(archivo, fac);
                archivo.Close();
                MessageBox.Show(this, "archivo creado", "mensaje");

            }
        }
    }


    edwin

    viernes, 15 de abril de 2016 22:12

Respuestas

  • Deberías inicializar también las variables en las que mantienes información del pedido:

            // metodo para borrar los campos del formulario 
             private void btnClear_Click(object sender, EventArgs e)
             {
                 lstSalida.Items.Clear();
                 this.Controls.Clear(); this.InitializeComponent();
                 pedido = new Orden();
                 cuenta = "CUENTA:\n";
                 subtotal = 0;
                 total = 0;
                 InfCliente = "";
    
             }

    Por otro lado si la variable fac únicamente la utilizas en el método btnGuardar_Click convendría que la declarases como privada dentro de este método.


    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, ...

    • Marcado como respuesta edva3000 sábado, 16 de abril de 2016 13:58
    sábado, 16 de abril de 2016 7:19

Todas las respuestas

  • Deberías inicializar también las variables en las que mantienes información del pedido:

            // metodo para borrar los campos del formulario 
             private void btnClear_Click(object sender, EventArgs e)
             {
                 lstSalida.Items.Clear();
                 this.Controls.Clear(); this.InitializeComponent();
                 pedido = new Orden();
                 cuenta = "CUENTA:\n";
                 subtotal = 0;
                 total = 0;
                 InfCliente = "";
    
             }

    Por otro lado si la variable fac únicamente la utilizas en el método btnGuardar_Click convendría que la declarases como privada dentro de este método.


    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, ...

    • Marcado como respuesta edva3000 sábado, 16 de abril de 2016 13:58
    sábado, 16 de abril de 2016 7:19
  • muchas gracias Asier por su respuesta me a funcionado.

    edwin

    sábado, 16 de abril de 2016 13:58