none
Convertir 2 listas (list) en point RRS feed

  • Pregunta

  • Hola estoy trabajando con visual C# 2010 express.

    Tengo 2 list una CoorX y otra CoorY , y quisiera pasar a point la "union" de las 2 listas.

    Es decir en un point [1]= (CoorX[0],CoorY[0]); El punto 1 tendría en su X la posición 0 de la lista CoordX y en su Y la posición 0 de la lista CoordY.

    en un point [2]= (CoorX[1],CoorY[1]); El punto 2 tendría en su X la posición 1 de la lista CoordX y en su Y la posición 1 de la lista CoordY.

    Así sucesivamente hasta que se acaben las listas.

    Supongo que habrá que utilizar un forech, ¿Pero como lo hago?

    Decir también que por supuesto las listas CoorX y CoorY tienen el mismo numero de elementos y que el numero de elementos lo puedo sacar de CoorX.Count.

    Gracias


    Alfonso

    domingo, 7 de abril de 2013 8:57

Respuestas

  • Hola

    Primero deberías validar que los datos en los textBox sean del tipo que esperas para evitar excepciones... Puedes hacerlo evitando la entrada de datos que no sean números en los textBox utilizando el evento keyPress, por ejemplo:

    private void Text_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                    e.Handled = true;
            }
    a todos los textBox que deseas que solo puedan admitir números (int) puedes asociarle en el evento KeyPress el método que te propongo arriba. Aun así hay algo mas que validar ( te lo dejo a ti: copy-paste), aunque con mi siguiente sugerencia debería bastar: También tomar la precaución del TryParse():
    private void button1_Click(object sender, EventArgs e)
    {
    int x;
    int y;
    if(int.TryParse(textbox1.text, out x) && int.TryParse(textBox2.text, out y))
    {
    puntos.add(new Point(x,y));
    }
    else
    {
    MessageBox.Show("No se puede agregar el punto");
    }
    
    }
    Seria mas o menos así... Saludos.



    • Editado Cruznick lunes, 8 de abril de 2013 14:57
    • Propuesto como respuesta cutuche lunes, 8 de abril de 2013 14:59
    • Marcado como respuesta Omar Ortiz lunes, 8 de abril de 2013 16:19
    lunes, 8 de abril de 2013 14:55

Todas las respuestas

  • Algo rudimentario y creo que se puede hacer mejor pero te dejo este codigo

     

    List<Point> listaPunto = new List<Point>();

    for(int i =0;i< CoorX.Count;i++) { . Point punto = new Point(CoorX[i], CoorY[i]); . listaPunto.Add(punto); }



    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos


    domingo, 7 de abril de 2013 11:59
    Moderador
  • hola

    una duda, esas dos listas como las has creado ? porque podrias desde un comienzo definir el Point sin tener que unir nada

    cual es la idea de unir dos listas en un Point si podrias hacerlo mucho mejor que crear esta lista desde un comienzo, digo no habais analizado esta alternativa ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 7 de abril de 2013 13:24
  • Hola

    Coincido con leandro, para que tener 3 listas si puedes crear solo una que almacene directamente Point? Analiza si no te seria mas factible en lugar de agregar coordX y coordY en sus respectivas listas para luego crear una lista Point con esos datos, directamente crear tu lista de tipo Point. Personalmente creo que seria lo mas acertado.

    Saludos.

    lunes, 8 de abril de 2013 12:21
  • Hola

    Barajo la posibilida que me comentais Cruznick y Leandro.

    PEro me surge una duda.

    Si al pulsar el button_1 quiero que añada el valor que tento en un textbox1 a la X de puntos (ya que es un tipo point) y el valor de un textbox2 a la Y. ¿Cómo lo realizo?

    Pienso que seria algo así como lo siguiente pero no se continuar.

     

    List<Point> puntos = new List<Point>();

            private void button1_Click(object sender, EventArgs e)
            {
                puntos.Add(

            }

     

    Gracias.

    lunes, 8 de abril de 2013 14:15
  • Hola

    Primero deberías validar que los datos en los textBox sean del tipo que esperas para evitar excepciones... Puedes hacerlo evitando la entrada de datos que no sean números en los textBox utilizando el evento keyPress, por ejemplo:

    private void Text_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                    e.Handled = true;
            }
    a todos los textBox que deseas que solo puedan admitir números (int) puedes asociarle en el evento KeyPress el método que te propongo arriba. Aun así hay algo mas que validar ( te lo dejo a ti: copy-paste), aunque con mi siguiente sugerencia debería bastar: También tomar la precaución del TryParse():
    private void button1_Click(object sender, EventArgs e)
    {
    int x;
    int y;
    if(int.TryParse(textbox1.text, out x) && int.TryParse(textBox2.text, out y))
    {
    puntos.add(new Point(x,y));
    }
    else
    {
    MessageBox.Show("No se puede agregar el punto");
    }
    
    }
    Seria mas o menos así... Saludos.



    • Editado Cruznick lunes, 8 de abril de 2013 14:57
    • Propuesto como respuesta cutuche lunes, 8 de abril de 2013 14:59
    • Marcado como respuesta Omar Ortiz lunes, 8 de abril de 2013 16:19
    lunes, 8 de abril de 2013 14:55