Llamar a Forms desde VB .NET

10/05/2005 - 21:38 por David C. | Informe spam
Hola,

Tengo una aplicación funcionando en eVB, y para llamar a Forms escribo lo
siguiente...
Call frmClientes.Show
frmClientes.selecCli.Visible = False
frmClientes.newClient.Visible = False

Ahora la estoy pasando a VB .NET y veo lo siguiente...
hay que instanciar el form que queremos llamar. Si hacemos Me.Close() en el
form que hemos llamado al pasar al from anterior (por ejemplo frmMenu)
entoces tarda bastante en aparecer.

La duda que tengo es cuando se ejecuta ...Private Sub frmMenu_Load..??????

Considero que me va muy lento

David

Preguntas similare

Leer las respuestas

#1 Angel J. Hernández M.
11/05/2005 - 11:27 | Informe spam
Justo al crearse una instancia del formulario.

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda

"David C." escribió en el mensaje
news:%
Hola,

Tengo una aplicación funcionando en eVB, y para llamar a Forms escribo lo
siguiente...
Call frmClientes.Show
frmClientes.selecCli.Visible = False
frmClientes.newClient.Visible = False

Ahora la estoy pasando a VB .NET y veo lo siguiente...
hay que instanciar el form que queremos llamar. Si hacemos Me.Close() en
el form que hemos llamado al pasar al from anterior (por ejemplo frmMenu)
entoces tarda bastante en aparecer.

La duda que tengo es cuando se ejecuta ...Private Sub frmMenu_Load..??????

Considero que me va muy lento

David

Respuesta Responder a este mensaje
#2 Tristan
11/05/2005 - 22:25 | Informe spam
No comprendo tu pregunta. ¿Cual es tu duda exactamente?. ¿Qué es lo que
tarda en aparecer?

Bueno, lo que si he entendido es la pregunta de cuando se ejecuta el evento
Load. Se ejecuta la primera vez que haces visible el formulario, que es
cuando se crea la ventana, es decir al hacer instancia.Show().

¿Pero qué es lo que te va lento?

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 David C.
12/05/2005 - 22:44 | Informe spam
Yo quiero que Form_Load me carge al arrancar el form, pero cuando vuelvo a
instanciar el frm para poder volver a llamarlo, entonces me vuelve a
ejecutar el código de Form_Load...con VB6.0 o eVB 3.0 podiamos
hacer frmTal.Show() o frmTal.Hide() ...con .NET solo se puede
hacer ...

Dim frmListPed As New frmListaPedidos
frmListPed.Show()
Me.Hide()
Es correcto ? Solo se puede hacer asi?
David

"Tristan" escribió en el mensaje
news:
No comprendo tu pregunta. ¿Cual es tu duda exactamente?. ¿Qué es lo que
tarda en aparecer?

Bueno, lo que si he entendido es la pregunta de cuando se ejecuta el
evento Load. Se ejecuta la primera vez que haces visible el formulario,
que es cuando se crea la ventana, es decir al hacer instancia.Show().

¿Pero qué es lo que te va lento?

Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
#4 Tristan
13/05/2005 - 08:48 | Informe spam
Bueno, todavía no tengo claro lo que quieres. Me parece adivinar que tal vez
tu dificultad está relacionado con la única diferencia entre formularios de
.net y vb. Las versiones anteriores de vb, tenían una instancia
predeterminada, de forma que se podía acceder a una instancia de formulario,
por el nombre de la clase. Esta instancia era la misma mientras no se
descargue. En vb.net no existe esa instancia por defecto. Lamentablemente la
próxima versión de vb.net dará un paso atrás y volverá a mostrar esa
instancia predeterminada de formulario.

Tienes un artículo muy bueno sobre las diferencias en el manejo de
formularios aquí:

http://www.microsoft.com/spanish/ms...eForms.asp

Fíjate sobre todo en el apartado: ¿Como trata este problema el asistente
para actualización?

Por cierto, por supuesto que se puede mostrar/ocultar un formulario con
Show()/Hide(), lo que pasa es que Show y Hide son métodos de instancia, no
de clase. Muestran una instancia concreta, no la clase (ese código de VB6 es
absurdo). Es decir, cuando haces:

Dim frmListPed As New frmListaPedidos
frmListPed.Show()
Me.Hide()

La primera sentencia crea una instancia de la clase frmListaPedidos
La segunda muestra esta instancia recién creada
La tercera esconde la instancia que está ejecutando el código (Me) no la
recién creada

Lo que ocurre es que cada vez que hagas new frmListaPedidos, estás creando
una nueva instancia de esa clase. No accedes siempre a la misma. Para
acceder a una misma instancia siempre, hay que seguir el patrón de
Singleton, que es exactamente lo que hace el asistente para actualización
con DefInstance (instancia por defecto).

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 David C
13/05/2005 - 15:06 | Informe spam
Ok,

me he leido el link, muchas gracias...tan solo una pequeña duda...

1) creo una classe per engoble los forms con métodos GET y SET para llamar
posteriormente esta clase mediante myForms.nombreForm por ejemplo...

2) donde realizo la instancia de esa clase para poder acceder desde
cualquier lado del proyecto .Es decir donde se declaran las variables
globales en .NET para que sean visibles desde todos los lados ?


david

"Tristan" escribió en el mensaje
news:
Bueno, todavía no tengo claro lo que quieres. Me parece adivinar que tal


vez
tu dificultad está relacionado con la única diferencia entre formularios


de
.net y vb. Las versiones anteriores de vb, tenían una instancia
predeterminada, de forma que se podía acceder a una instancia de


formulario,
por el nombre de la clase. Esta instancia era la misma mientras no se
descargue. En vb.net no existe esa instancia por defecto. Lamentablemente


la
próxima versión de vb.net dará un paso atrás y volverá a mostrar esa
instancia predeterminada de formulario.

Tienes un artículo muy bueno sobre las diferencias en el manejo de
formularios aquí:




http://www.microsoft.com/spanish/ms...ces/vbtchW
orkingWithMultipleForms.asp

Fíjate sobre todo en el apartado: ¿Como trata este problema el asistente
para actualización?

Por cierto, por supuesto que se puede mostrar/ocultar un formulario con
Show()/Hide(), lo que pasa es que Show y Hide son métodos de instancia, no
de clase. Muestran una instancia concreta, no la clase (ese código de VB6


es
absurdo). Es decir, cuando haces:

Dim frmListPed As New frmListaPedidos
frmListPed.Show()
Me.Hide()

La primera sentencia crea una instancia de la clase frmListaPedidos
La segunda muestra esta instancia recién creada
La tercera esconde la instancia que está ejecutando el código (Me) no la
recién creada

Lo que ocurre es que cada vez que hagas new frmListaPedidos, estás creando
una nueva instancia de esa clase. No accedes siempre a la misma. Para
acceder a una misma instancia siempre, hay que seguir el patrón de
Singleton, que es exactamente lo que hace el asistente para actualización
con DefInstance (instancia por defecto).

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida