none
Hacer Copia de Items de un ComboBox RRS feed

  • Pregunta

  • Hola a todos/as.

    Como puedo copiar el contenido de items de un ComboBox sobre por ejemplo un array para recuperar ese estado de registros más adelante después de haber realizado algunos cambios.
    Hay un método del Combo "CopyTo" que te realiza dicha acción de vaciado "this.combo.Items.CopyTo(object[], int array)" pero no logro saber como funciona correctamente.
    Y a posteriori una vez haya manipulado el Combo y quiera recuperar su estado original, entiendo que desde dicho array puedo hacer un addRange "this.combo.Items.addRange(object[])"

    Si tenéis alguna idea o ejemplo os lo agradezco.

    Saludos.

    jueves, 18 de agosto de 2011 9:22

Respuestas

  • Hola Joanca, 

    Te propongo 2 ejemplos:

          List<String> listado = new List<string>();
          listado.AddRange(this.comboBox1.Items.OfType<string>().ToArray());
    
          string[] datos = new string[this.comboBox1.Items.Count];
          this.comboBox1.Items.CopyTo(datos, 0);
    


    Teniendo en cuenta que los elementos del Combo son de Tipo cadena (he metido los elementos a mano...)

     


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    • Marcado como respuesta Joanca jueves, 18 de agosto de 2011 11:54
    jueves, 18 de agosto de 2011 9:45
    Moderador
  • Si,

    Tan solo necesitarias hacer:

     

          this.comboBox1.Items.Clear();
          this.comboBox1.Items.AddRange(listado.ToArray());
    



    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    • Marcado como respuesta Joanca jueves, 18 de agosto de 2011 11:54
    jueves, 18 de agosto de 2011 10:00
    Moderador

Todas las respuestas

  • Hola Joanca, 

    Te propongo 2 ejemplos:

          List<String> listado = new List<string>();
          listado.AddRange(this.comboBox1.Items.OfType<string>().ToArray());
    
          string[] datos = new string[this.comboBox1.Items.Count];
          this.comboBox1.Items.CopyTo(datos, 0);
    


    Teniendo en cuenta que los elementos del Combo son de Tipo cadena (he metido los elementos a mano...)

     


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    • Marcado como respuesta Joanca jueves, 18 de agosto de 2011 11:54
    jueves, 18 de agosto de 2011 9:45
    Moderador
  • Hola Javier y muchas gracias por atenderme.

    Quizás la mejor será la primera ya que en la segunda te obliga a saber de antemano cuantos items tendrás y Yo por norma general la inicialización de variables la hago al principio del código del Form y luego cargo los Combos.

    La pregunta es si con el List luego puedo hacer un addRange de nuevo sobre el Combo para dejarlo con el estado original.

    Gracias de nuevo y saludos.

    jueves, 18 de agosto de 2011 9:56
  • Si,

    Tan solo necesitarias hacer:

     

          this.comboBox1.Items.Clear();
          this.comboBox1.Items.AddRange(listado.ToArray());
    



    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    • Marcado como respuesta Joanca jueves, 18 de agosto de 2011 11:54
    jueves, 18 de agosto de 2011 10:00
    Moderador
  • No se si sea lo que buscas, pero almenos ésto es lo que yo buscaba cuando pasé por este foro. Saludos

    //metodo que toma un combobox por parametro,  y saca una copia de los elementos (Strings) que contiene. Luego los almacena en un array.

    public void ObtenerInfo(javax.swing.JComboBox comboX){

       String Contenedor[]=new String[comboX.getItemCount]; //crea un array dependiendo de la cantidad de elementos del combo

        if(combox.getItemCount()>0){
            for(int i=0;i<combo.getItemCount();i++){                 
              Contenedor[i]=combo.getItemAt(i).toString();        //llena el array dependiendo de la posición 
                  
               }
            }
        }    
      




    • Editado L.Villalobos viernes, 23 de noviembre de 2012 23:15
    • Propuesto como respuesta L.Villalobos viernes, 23 de noviembre de 2012 23:15
    viernes, 23 de noviembre de 2012 23:08