Foros del Web » Programación para mayores de 30 ;) » .NET »

Recorrer controles dentro de un panel en Visual C#

Estas en el tema de Recorrer controles dentro de un panel en Visual C# en el foro de .NET en Foros del Web. Hola necesito recorrer los controles que están en una colección de tab pages para copiar el contenido de un listbox al portapapeles. Dentro de cada ...
  #1 (permalink)  
Antiguo 17/12/2008, 01:04
 
Fecha de Ingreso: mayo-2008
Mensajes: 25
Antigüedad: 15 años, 11 meses
Puntos: 0
Recorrer controles dentro de un panel en Visual C#

Hola necesito recorrer los controles que están en una colección de tab pages para copiar el contenido de un listbox al portapapeles. Dentro de cada tabpages hay textbox, listbox, y panels y dentro de los paneles hay listbox. He estado mirando códigos y he probado cosillas. Consigo copiar el contenido de los textbox pero me da problemas cuando intentio accedes al listbox que está dentro de un panel. Aquí os dejo un código que me encontré y que modifique pero que me falla en lo que ya he dicho. Si alguién encuentra el fallo o tiene alguna idea , agradecería mucho la ayuda.

Gracias
Un saludo


IEnumerator ienumControls;
foreach (TabPage tP in this.tabControl12.TabPages)
{
ienumControls = tP.Controls.GetEnumerator();//Controles de esa página
if ((e.Control) && (e.KeyCode == Keys.C))//Control + c
{
foreach(Control c in tP.Controls)
{
foreach (Panel pl in c.Controls)
{
foreach (Control cpl in pl.Controls)
{
if(cpl is System.Windows.Forms.ListBox)
{
if(cpl.Focused)
{
System.Windows.Forms.ListBox controlLB = (System.Windows.Forms.ListBox)ienumControls.Curren t;
Clipboard.SetText(controlLB.SelectedItem.ToString( ));
}
}

}
}

}
}

}
  #2 (permalink)  
Antiguo 27/12/2008, 11:02
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Recorrer controles dentro de un panel en Visual C#

Yo lo haria de la siguiente manera:

Código:
        private void BuscarControles()
        {
            for (int i = 0; i < this.tabControl.TabPages.Count; i++)
            {
                this.Recorrer(this.tabControl.TabPages[i].Controls);
            }
        }

        private void Recorrer(Control.ControlCollection controls)
        {
            for (int i = 0; i < controls.Count; i++)
            {
                if (controls[i].Controls != null && controls[i].Controls.Count > 0)
                {
                    this.Recorrer(controls[i].Controls);
                }
                else
                {
                    ListBox LB = controls[i] as ListBox;

                    if (LB != null)
                    {
                        Clipboard.SetText(LB.SelectedItem.ToString());
                    }

                    //Aqui podes agregar codigo para los demas tipos de control
                }
            }
        }

Espero haberte podido ayudar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:02.