none
Lista aleatoria RRS feed

  • Pregunta

  • Hola:

    Quiero diseñar y crear un programa con Windows Form. Lo que tiene que hacer es, introducir datos y almacenarlo en un XML o donde sea para luego, recuperar dicha información más tarde.

    Tengo dos TextBox (puede ser otro componente), mientras en uno introdusco por ejemplo las iniciales como esta, por poner un ejemplo, CGP, en el segundo TextBox pongo su significado que es, "Caja General de Protección". Con un botón añade en la lista en un archhivo XML o el que sea, también puedo borrar lista que no quiera.

    Cuando ya tenga la lista creada, lo que tiene que hacer el programa es lo siguiente, pulso un botón, alatoriamente me sale una sigla como CGP en el primer TextBox, si pulso otro botón me sale en el segundo textbox lo que significa dicha siglas.

    Este programa, es como un juego, me sale siglas que primero el usuario tiene que crear, una vez creada, sale aleatoriamente siglas y tengo que adivinar su significado, sepa o no lo sepa, si pulsas el otro botón, ya sale en el otro textbox lo que significa. Es un truco para aprender cosas de estas.

    Hace tiempo pregunté como se genera una lista aleatoria, solo palabras pero no siglas con las palabras en textbox diferentes.

    La lista que quiero introducir es esta, que el usuario pueda poner las que quieras con el programa ya ejecutado, no directamente entro del compilador.

    TextBox 1--> TextBox 2

    CGP --> Caja general de protección.
    LGA --> Línea general de alimentación.
    CC --> Centralización de contadores.
    DI --> Derivación individual.
    CGMP --> Cuadro general mando protección.
    ICP --> Interruptor control potencia.
    DGMP --> Dispositivo general mando protección.
    PIAS --> Pequeños interruptores automáticos.
    ID --> Interruptor diferencial.
    ITC --> Instrucción técnica coplementaria.
    ICT --> Infraestrucctura común de telecomunicaciones.
    CPM --> Caja de protección y medida.

    ¿Alguna idea?

    Saludos.


    http://electronica-pic.blogspot.com

    miércoles, 24 de enero de 2018 21:19

Respuestas

  • hola

    respecto a la serializacion xml, podrias hacerlo simple, guiate por lo que se explica aqui

    Cómo deserializar un objeto

    de esta forma serializas y deserializas en base a una clase

    >>si pulsas el otro botón, ya sale en el otro textbox lo que significa.

    podrias hacer una busqueda usando linq, algo como ser

    var result = listaSiglas.FirstOrDefault(x=> x.Code == textbox1.text);
    
    textbox2.Text = result,.Descripcion;

    por supuesto tendrias una clase como ser

    public class Siglas{
    
      public string Code {get;set;}
    
      public string Descripcion{get;set;}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 25 de enero de 2018 14:59
  • Hice una parte de lo que creo que intentas.

      public partial class Form1 : Form
      {
    
        List<Pregunta> Preguntas;
    
        public Form1()
        {
          InitializeComponent();
          CargarPreguntas();
        }
    
        private void CargarPreguntas()
        {
          int pos = 1;
          Preguntas = new List<Pregunta>();
          Pregunta NuevaPreg;
          DataTable t = DbPreguntas.ObtenerPreguntas();
    
          foreach (DataRow r in t.Rows)
          {
            NuevaPreg = new Pregunta(pos, r["Codigo"].ToString(), r["Nombre"].ToString());
            Preguntas.Add(NuevaPreg);
            pos ++;
          }
        }
    
        private void btnMezclar_Click(object sender, EventArgs e)
        {
          List<Pregunta> lstMesclada = new List<Pregunta>();
          List<Pregunta> lstAux = new List<Pregunta>();
          lstAux.InsertRange(0, this.Preguntas);
          Random r = new Random();
          int indice;
    
          foreach (Pregunta p in this.Preguntas)
          {
            indice = r.Next(lstAux.Count - 1);
            lstMesclada.Add(lstAux[indice]);
            lstAux.RemoveAt(indice);
          }
    
          this.Preguntas = lstMesclada;
        }
    
        private void btnActualizar_Click(object sender, EventArgs e)
        {
          grPreguntas.DataSource = null;
          grPreguntas.DataSource = Preguntas;
        }
    
        
      }
    
     

    y aquí va las clases "Pregunta" y "DbPreguntas"

    public class Pregunta
      {

        public Pregunta()
        {
          Posicion =-1;
          Codigo="";
          Nombre = "";
        }

        public Pregunta(int posicion, String codigo, String nombre)
        {
          Posicion = posicion;
          Codigo = codigo;
          Nombre = nombre;
        }

        public int Posicion { get; set; }
        public String Codigo { get; set; }
        public String Nombre { get; set; }
      }

     public static class DbPreguntas
      {
        private static string strCnn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Preguntas.mdb";  
     
        public static DataTable ObtenerPreguntas()
        {
          using (OleDbConnection cn = new OleDbConnection(strCnn))
          {
            cn.Open();
            string sql = "SELECT * FROM Preguntas";
            DataTable dt = new DataTable();
            OleDbCommand cmd = new OleDbCommand(sql, cn);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(dt);
            return dt;
          }
        }
    
    
    // Aqui va el resto del código para insertar, borrar, etc
    
    
      }

    Saludos

    • Marcado como respuesta Metaconta viernes, 9 de febrero de 2018 6:31
    domingo, 28 de enero de 2018 18:44

Todas las respuestas

  • hola

    respecto a la serializacion xml, podrias hacerlo simple, guiate por lo que se explica aqui

    Cómo deserializar un objeto

    de esta forma serializas y deserializas en base a una clase

    >>si pulsas el otro botón, ya sale en el otro textbox lo que significa.

    podrias hacer una busqueda usando linq, algo como ser

    var result = listaSiglas.FirstOrDefault(x=> x.Code == textbox1.text);
    
    textbox2.Text = result,.Descripcion;

    por supuesto tendrias una clase como ser

    public class Siglas{
    
      public string Code {get;set;}
    
      public string Descripcion{get;set;}
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 25 de enero de 2018 14:59
  • hola metac este blog te puede servir

    http://labloguera.net/pedro/2007/08/03/jugando-m-s-facilmente-con-la-informaci-n-de-los-xml-s-xsd-exe/

    adicional como dice tutini esta bien usar linq con un objeto de la clase digamos que se llame electronica y colocar la descripcion de la sigla que corresponda

    var result = listaSiglas.FirstOrDefault(x=> x.Code == textbox1.text);
    
    textbox2.Text = result,.Descripcion;

    jueves, 25 de enero de 2018 16:32
  • Hice una parte de lo que creo que intentas.

      public partial class Form1 : Form
      {
    
        List<Pregunta> Preguntas;
    
        public Form1()
        {
          InitializeComponent();
          CargarPreguntas();
        }
    
        private void CargarPreguntas()
        {
          int pos = 1;
          Preguntas = new List<Pregunta>();
          Pregunta NuevaPreg;
          DataTable t = DbPreguntas.ObtenerPreguntas();
    
          foreach (DataRow r in t.Rows)
          {
            NuevaPreg = new Pregunta(pos, r["Codigo"].ToString(), r["Nombre"].ToString());
            Preguntas.Add(NuevaPreg);
            pos ++;
          }
        }
    
        private void btnMezclar_Click(object sender, EventArgs e)
        {
          List<Pregunta> lstMesclada = new List<Pregunta>();
          List<Pregunta> lstAux = new List<Pregunta>();
          lstAux.InsertRange(0, this.Preguntas);
          Random r = new Random();
          int indice;
    
          foreach (Pregunta p in this.Preguntas)
          {
            indice = r.Next(lstAux.Count - 1);
            lstMesclada.Add(lstAux[indice]);
            lstAux.RemoveAt(indice);
          }
    
          this.Preguntas = lstMesclada;
        }
    
        private void btnActualizar_Click(object sender, EventArgs e)
        {
          grPreguntas.DataSource = null;
          grPreguntas.DataSource = Preguntas;
        }
    
        
      }
    
     

    y aquí va las clases "Pregunta" y "DbPreguntas"

    public class Pregunta
      {

        public Pregunta()
        {
          Posicion =-1;
          Codigo="";
          Nombre = "";
        }

        public Pregunta(int posicion, String codigo, String nombre)
        {
          Posicion = posicion;
          Codigo = codigo;
          Nombre = nombre;
        }

        public int Posicion { get; set; }
        public String Codigo { get; set; }
        public String Nombre { get; set; }
      }

     public static class DbPreguntas
      {
        private static string strCnn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Preguntas.mdb";  
     
        public static DataTable ObtenerPreguntas()
        {
          using (OleDbConnection cn = new OleDbConnection(strCnn))
          {
            cn.Open();
            string sql = "SELECT * FROM Preguntas";
            DataTable dt = new DataTable();
            OleDbCommand cmd = new OleDbCommand(sql, cn);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            da.Fill(dt);
            return dt;
          }
        }
    
    
    // Aqui va el resto del código para insertar, borrar, etc
    
    
      }

    Saludos

    • Marcado como respuesta Metaconta viernes, 9 de febrero de 2018 6:31
    domingo, 28 de enero de 2018 18:44