none
Ayuda con list RRS feed

  • Pregunta

  • hola buenas tardes ya termine mi codigo pero cuando lleno el formulario del programa y quiero mostrar el resultado hasta la segunda vez que lo lleno sale en la primera no anexo imagenes

    meti lo mismo cuatro veces

    CODIGO

    ||||||||||||||||||||||||CLASE|||||||||||||||||||

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace practica4
    {
        class rfc
        {
            public string nombre;
            public string AP;
            public string AM;
            public string fecha;
            public string lugar;
            public string contraseña;

            public rfc(string nombre, string AP, string AM, string fecha, string lugar,string contraseña)
            {
                this.nombre = nombre;
                this.AP = AP;
                this.AM = AM;
                this.fecha = fecha;
                this.lugar = lugar;
                this.contraseña = contraseña;
            }
            public override string ToString()
            {
                return nombre+" "+AP+" "+AM+" nacio el dia "+fecha+" en "+lugar+ " la contraseña generada es "+contraseña+"\n";
            }
        }
        

    }

    |||||||||||||||||||||||||||||||||||||||PROGRAMACION||||||||||||||||||||||||||||||||||||||||

    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;

    namespace practica4
    {
        public partial class Form1 : Form
        {
            List<rfc> rfcs = new List<rfc>();
            string contraseña= "";
            string salida = "";
            public Form1()
            {
                InitializeComponent();
            }

            private void label3_Click(object sender, EventArgs e)
            {

            }

            private void buttonregistrar_Click(object sender, EventArgs e)
            {
                string nombre = textBoxnombre.Text;
                string AP = textBoxAP.Text;
                string AM = textBoxAM.Text;
                string fecha = textBoxFechaN.Text;
                string lugar = textBoxLugardeNa.Text;
                

                rfc rf = new rfc(nombre, AP, AM, fecha, lugar, contraseña);
                rfcs.Add(rf);
                if (nombre.Length == 0 && AP.Length == 0 && AM.Length == 0 && fecha.Length == 0 && lugar.Length == 0)
                {
                    MessageBox.Show("Ningun campo puede estar vacio....!!!!");
                }

                
                     string AP2 = AP.Substring(0, 2);
                    string AM2 = AM.Substring(AM.Length - 1, 1);
                    string fecha2 = fecha.Substring(8, 2);
                    string salida = AM2;
                    string dosLetras = "";
                     string letras="";
                    Random rnd = new Random();
                    for (int i = 0; i < 2; i++)
                    {
                        int Uno = rnd.Next(0, lugar.Length);
                        dosLetras += lugar[Uno];
                    }

                    
                    for(int i = 0; i<nombre.Length; i++)
                {
                    if (nombre[i] == 'B' || nombre[i] == 'b' || nombre[i] == 'C' || nombre[i] == 'c' || nombre[i] == 'D' || nombre[i] == 'd' || nombre[i] == 'F' || nombre[i] == 'f' || nombre[i] == 'G' || nombre[i] == 'g' || nombre[i] == 'H' || nombre[i] == 'h' || nombre[i] == 'J' || nombre[i] == 'j' || nombre[i] == 'K' || nombre[i] == 'k' || nombre[i] == 'L' || nombre[i] == 'l' || nombre[i] == 'M' || nombre[i] == 'm' || nombre[i] == 'n' || nombre[i] == 'N' || nombre[i] == 'P' || nombre[i] == 'p' || nombre[i] == 'Q' || nombre[i] == 'q' || nombre[i] == 'R' || nombre[i] == 'r' || nombre[i] == 'S' || nombre[i] == 's' || nombre[i] == 'T' || nombre[i] == 't' || nombre[i] == 'V' || nombre[i] == 'v' || nombre[i] == 'W' || nombre[i] == 'w' || nombre[i] == 'X' || nombre[i] == 'x' || nombre[i] == 'Y' || nombre[i] == 'y' || nombre[i] == 'Z' || nombre[i] == 'z')
                    { 
                        letras += nombre[i];
                        }
                }
                string letras2 = letras.Substring(1, 2);

                
                contraseña = AP2+AM2+letras2+fecha2+dosLetras;
               
                textBoxAM.Clear();
                textBoxAP.Clear();
                textBoxnombre.Clear();
                textBoxFechaN.Clear();
                textBoxLugardeNa.Clear();
                




            }

            private void button1_Click(object sender, EventArgs e)
            {
                foreach (var a in rfcs)
                {
                    salida += a.ToString();
                }
                MessageBox.Show(salida);
            }
        }
    }

    lunes, 14 de octubre de 2019 6:59

Respuestas

  • Fíjate que contraseña está definida como variable de clase y al principio se inicializa como cadena vacía.

    Después, en buttonregistrar_Click, haces un new rfc y le asignas la contraseña, que en ese momento está vacía.

    Y después, más abajo, metes un valor en contraseña. Este valor lo usará el próximo rfc que registres en buttonregistrar_Click, pero el que ya fue inicializado se queda con la contraseña vacía. En resumidas cuentas, tal como lo tienes programado, cada rfc recibe la contraseña del anterior rfc, y el primero queda con ella vacía.

    La solución más evidente consiste en cambiar el orden de las operaciones, de forma que primero calcules la contraseña y después instances el rfc.

    • Marcado como respuesta shupager99 lunes, 14 de octubre de 2019 17:30
    lunes, 14 de octubre de 2019 9:00
    Moderador