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

CallByName

Estas en el tema de CallByName en el foro de .NET en Foros del Web. Hola, buenos dias. En una aplicacion que estoy desarrollando desde el menu puedo abrir varios formularios y los abro seleccionado nodos de un arbol. El ...
  #1 (permalink)  
Antiguo 12/11/2008, 06:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
CallByName

Hola, buenos dias. En una aplicacion que estoy desarrollando desde el menu puedo abrir varios formularios y los abro seleccionado nodos de un arbol. El caso es que ahora mismo lo tengo asi:

Código:
Select Case NombrePantalla:
    Case "Formulario1": Formulario1.Show()
    Case "Formulario2": Formulario2.Show()
    .
    .
    .
End Select
Me gustaria poder ahorrarme todo el select usando CallByName, realizar lo sieguiente en lugar de eso.

Código:
CallByName(NombrePantalla, "Show", CallType.Method, Nothing)
El problema esta en que nombre de pantalla es un string con el nombre de la pantalla. Hay alguna forma de que CallByName sepa interpretar que el string que le paso como parametro hace referencia a un objeto.

Los formularios que utilizo son las instancias que crea la aplicacion, se puede acceder a ellas por My.Forms.Formulario1, My.Fomrs.Formulario2... Pero claro, tengo el mismo problema, no puedo obtenerlas directamente a traves del nombre.

¿A alguien se le ocurre como podria hacerlo?

Muchas Gracias, Un saludo.
  #2 (permalink)  
Antiguo 13/11/2008, 18:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 19
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: CallByName

Código:
Dim asmObjeto as Assembly
Dim objObjeto as Object

asmObjeto = Assembly.LoadFrom(NombrePantalla)
objObjeto = asmObjeto.CreateInstance(assemblyName.Namespace)

CallByName(objObjeto , "Show", CallType.Method, Nothing)
Tal vez algo parecido te puede funcionar
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 08:44.