• Domingo 17 de Noviembre de 2024, 22:39

Autor Tema:  Crear Un Arbol Con Todos Mis Controles  (Leído 2825 veces)

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Crear Un Arbol Con Todos Mis Controles
« en: Lunes 4 de Junio de 2007, 22:48 »
0
Necesito formar un arbol, con todos mis formularios, y dentro de los formularios sus respectivos componentes.
Para poder lograr esto estoy usando el nombre de espacio System.Reflection

Este problema lo pude solucionar si es que la aplicacion de la cual quiero formar su arbol es un WinForms, pero lo que ahora quiero es para WebForm.

En WinForms cuando me instancio un objeto de tipo formulario digo.
Form objForm;
y dejpuej mando a una funcion que me arma el arbol a partir de ese formulario.

Pero en WebForm no logro poder instanciar un objeto de tipo................
no se si de Page, HtmlForm, etc.

No importa si la ayuda es para C# o VB.

Espero y puedan ayudarme.


BYTE
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Crear Un Arbol Con Todos Mis Controles
« Respuesta #1 en: Martes 5 de Junio de 2007, 05:30 »
0
asses una variable global de tipo     Assembly ass;
Utilizo el espacio de nombres using System.Reflection;

Código: Text
  1.  
  2.     protected void Button1_Click(object sender, EventArgs e)
  3.     {
  4.         ass = System.Reflection.Assembly.GetExecutingAssembly();
  5.         mostrarForms();
  6.     }
  7.  
  8.  

Código: Text
  1.  
  2.     public void RecorrerControles(Control Lista, ref RadTreeNode padre){                  
  3.         foreach (Control myControl in Lista.Controls){
  4.             String a = myControl.GetType().Name;                        
  5.             String b = myControl.GetType().ToString()&#59;
  6.             b = SacarCola(b);
  7.             //Label3.Text = Label3.Text + "; " + b;
  8.  
  9.             if (tipos.IndexOf(b) != -1){
  10.                 String nameControl = myControl.ID;
  11.                 RadTreeNode nodoH = new RadTreeNode(nameControl);
  12.                 if (myControl.Controls.Count > 0){
  13.                     RecorrerControles(myControl, ref nodoH);
  14.                 }
  15.                 String s = padre.Text + nodoH.Text;
  16.                 //padre.ChildNodes.Add(nodoH);
  17.                 padre.Nodes.Add(nodoH);
  18.             }              
  19.         }
  20.     }
  21.  
  22.  
Esta parte esta bien, solo le tengo que mandar un control de tipo formulario y me recorre todos sus controles y lo agrega a un treeview.

Mi problema es aqui.
Código: Text
  1.  
  2.     private void mostrarForms()
  3.     {
  4.     foreach(Type t in ass.GetTypes())
  5.     {
  6.                   RadTreeNode nodoForm = new RadTreeNode(t.FullName);
  7.       string s = t.FullName;
  8.                   Type tipoComponente;
  9.                   tipoComponente = ass.GetType(s);
  10.                   object o;
  11.                   // por si hemos seleccionado algo que no es una clase
  12.                   try
  13.                   {
  14.                         o = Activator.CreateInstance(tipoComponente);
  15.                         // si no es un formulario, mostramos un aviso y salimos
  16.                         s = o.GetType().ToString();
  17.                         if (!(o is HtmlForm))
  18.                         {
  19.                             return;
  20.                         }
  21.                   }
  22.                   catch (Exception ex)
  23.                   {
  24.                         return;
  25.                   }
  26.  
  27.  
  28.                 // convertimos el objeto en un formulario
  29.                 // como sabemos que si llega aquí es un formulario,
  30.                 // usamos DirectCast que hace menos trabajo que CType.
  31.                   HtmlForm f = (HtmlForm )o;
  32.  
  33.                         RadTreeView2.Nodes.Add(nodoForm);
  34.                         RecorrerControles(f, ref nodoForm);
  35.     }
  36.   }
  37.  
  38.  
Mi problema esta en la ultima linea, donde llamo a RecorrerControles y le mando f que es de tipo HTMLForm, cuando va y recorre sus controles, no encuentra ninguno.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Crear Un Arbol Con Todos Mis Controles
« Respuesta #2 en: Jueves 7 de Junio de 2007, 01:46 »
0
Alguien conoce alguna otra forma de poder reconocer mis formularios que tiene una determinada aplicacion WEB y poder instanciarloss ????

Tal vez yo me fui por el lado mas dificil, escucho sugerencias !!!! :rolleyes:  :rolleyes:  :rolleyes:

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Crear Un Arbol Con Todos Mis Controles
« Respuesta #3 en: Viernes 8 de Junio de 2007, 20:00 »
0
:huh:  :huh:

cuando ejecuto esta instruccion en un WinForm para crear una instancia de un formulario Window, me crea una instancia del formulario que quiero y tambien sus controles que tiene el mismo formulario.
Pero cuando ejecuto esa misma instruccion en un WebForm para crear una instancia de un formulario Web, me crea la instancia, PERO NO SUS CONTROLES.

Ese es mi problema de que no me crea sus controles.
Cuando lo corro paso a paso noto que en realidad los crea, pero en sus valores tienen NULL (y en WinForm no salen null, mas bien salen sus propiedades ).

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Crear Un Arbol Con Todos Mis Controles
« Respuesta #4 en: Lunes 2 de Julio de 2007, 09:55 »
0
Si puedes ponerme un ejemplo en Vb, podría rastrearlo y ver donde te falla, en C me cuesta seguirlo y no acabo de ver que hace exactamente...

Saludos.
«Ma non troppo»
----> ModoVacaciones = False<----