SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: lencho en Lunes 4 de Junio de 2007, 22:48

Título: Crear Un Arbol Con Todos Mis Controles
Publicado por: lencho en Lunes 4 de Junio de 2007, 22:48
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
Título: Re: Crear Un Arbol Con Todos Mis Controles
Publicado por: lencho en Martes 5 de Junio de 2007, 05:30
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.
Título: Re: Crear Un Arbol Con Todos Mis Controles
Publicado por: lencho en Jueves 7 de Junio de 2007, 01:46
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.
Título: Re: Crear Un Arbol Con Todos Mis Controles
Publicado por: lencho en Viernes 8 de Junio de 2007, 20:00
: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.
Título: Re: Crear Un Arbol Con Todos Mis Controles
Publicado por: Nebire en Lunes 2 de Julio de 2007, 09:55
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.