The Geek Inside

Julio Carlos Sánchez Blog

Como obtener la forma padre de un control en C#

En WinForms no existe una forma directa, o que por lo menos yo conozca de traer todos los controles de algún tipo específico para un pre o post procesamiento.

Así que se tienen que recorrer todos los controles para ir procesando el tipo de control que se necesita.

Para esto se pueden encontrar en la red varios artículos.

Sin embargo, en el proyecto en el que me encuentro colaborando actualmente necesitaba hacer algo similar: Descubrir la Forma a la que pertenece un control.

Estuve buscando algo en la red que me pudiera asistir, pero no encontré nada que me fuera útil.

Así que me dispuse a escribir un método que me ayudara en mi tarea, y este es el resultado:

View CodeCSHARP
1
2
3
4
5
6
7
8
9
10
11
12
private Form DiscoverParentForm(Control control)
{
    Control parent = control.Parent;
    Type controlType = parent.GetType();
 
    if (!controlType.IsSubclassOf(typeof(Form)))
    {
        parent = DiscoverParentForm(parent);
    }
 
    return (Form)parent;
}

Si tiene que llevar a cabo esta tarea, pueden usar este método libremente, buena suerte!!!!!. s

 |  Related posts

4 Comments so far

  1. mario September 12th, 2008 4:23 pm

    amm necesito ayuda para hacer una forma padre y una forma hijo… qisiera hacer un sistema empaquetado

  2. The Geek Inside September 12th, 2008 4:32 pm

    No sé exactamente a que te refieres, podrías ser más específico por favor?

  3. mario September 12th, 2008 4:38 pm

    osea hacer una llamada de una Form a otra pero en la misma ventana Form primera

  4. The Geek Inside September 12th, 2008 4:54 pm

    Si entiendo lo que dices puedes hacer la llamada en algo como esto, desde la Form1:

    Form2.MetodoQueUsaras();
    

    El método tiene que ser público, las formas son objetos al fin y al cabo.

    Por otro lado para hacer que una forma sea padre de la otra se tiene que especificar en el método Show:

    Form2.Show(Form1);
    

    Donde la Form2 será hija de la Form1.

Leave a reply

Mexico