Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005 - Jorge Serrano - MVP Visual Developer - Visual Basic

Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

 Artículo :: Programación :: Visual Basic 2005

Instanciando formularios en Visual Basic 2005

A colación de la entrada escrita en el blog de José Luis Quintero y de sus sucesivos comentarios en los cuáles se hablan entre otras cosas, de la idoneidad de usar o no un lenguaje u otro, me he acordado de una de esas características introducidas en Visual Basic 2005, que a mí personalmente me causa alergia, aunque entiendo por otra parte el beneficio de usarla y se que por eso y por otras cosas lo han incorporado al lenguaje.

Todos saben que soy MVP por Visual Basic, y que me encanta este lenguaje, es una joya, pero no soy de esas personas a las que gustándole algo muchísimo como Visual Basic, se convierte en un vasallo y proclama a los cuatro vientos que no hay nada mejor que eso en todo el Universo. La radicalización no es mi fuerte, la verdad. Si tengo que atizar, atizo, y en esta ocasión, lo hago como podréis comprobar.

Microsoft siempre ha querido atraer a los programadores de VB6 y anteriores versiones a la plataforma .NET, sin embargo, se ha encontrado con diferentes aspectos que ha hecho que estos programadores se echaran hacia atrás en muchas ocasiones. El cambio lo encontraban problemático y hasta traumático a veces.

En mi opinión, hay tres aspectos generales (podríamos puntualizar más, pero me quedo con estos tres) que debe tener en cuenta un programador que pasa de VB6 a .NET y que quiere empezar a desarrollar con esta nueva tecnología.
1-. El programador debe aprender los conceptos generales de la orientación a objetos.
2-. El programador debe conocer, someramente al menos, las clases de .NET. Pero esto se aprende a base de práctica. Tampoco hace falta conocer todas las clases ni tampoco es imprescindible para trabajar por primera vez con .NET, pero nuestro rendimiento y productividad depende de este conocimiento.
3-. El programador debe conocer aspectos de programación de VB.NET, que se difieren de VB y que deben ser usados en lugar de los comandos de VB tradicional que se usan como compatibilidad.

Referente al tercer punto, en VB 2005 (y VB.NET en general), hay multitud de comandos que tienen su origen en la compatibilidad con VB, y el programador se encuentra por defecto con la posibilidad de usar los comandos de compatibilidad o los nuevos comandos de la estructura natural de .NET. De hecho, el uso de compatibilidad que tiene relación con el tercer punto, tiene a la vez relación indirecta con algunas clases de .NET y por lo tanto con el segundo punto.

Internamente, los comandos de compatibilidad son traducidos al mismo comando natural de las clases de .NET, y un buen ejemplo de esto es el comando MsgBox y MessageBox.Show. Obivamente, lo natural para un desarrollador que viene de VB, es usar MsgBox, pero MsgBox se convierte luego a MessageBox.Show, por lo que resulta a priori más eficiente usar directamente MessageBox.Show que MsgBox. Adicionalmente, si ese desarrollador tiene que iniciar un proyecto de C# y usa MsgBox, MsgBox en C# no existe, por lo que es más adecuado acostumbrarse cuanto antes al uso de MessageBox.Show y pensar que es la única forma de mostrar un mensaje en pantalla por ejemplo. El problema es que no hay ningún libro que comente estos detalles, y sólo la práctica puede ponernos en la senda adecuada.

Pero volviendo al tema que nos ocupa, a la hora de instanciar formularios nos encontramos con la misma problemática de MsgBox y que tiene que ver con el uso de instrucciones clásicas de VB pero en .NET. ¡Que horror!. Lo peor de todo, es que esto se ha añadido en Visual Basic 2005 y no estaba disponible en versiones anteriores de VB para .NET, lo cuál puede ser más horroroso si cabe.

En Visual Basic .NET (versiones 2002 y 2003 de .NET), debíamos instanciar un formulario para cargarlo. El formulario es una clase y la instanciación la hacíamos nosotros (no hablo de Shared o Static). Algo natural en lenguajes orientados a objetos.

En Visual Basic 2005, este uso sigue utilizándose, pero de repente, los chicos de Redmond nos "facilitan" la vida con dos formas más de cargar un formulario en nuestra aplicación. Por un lado tenemos el nombre de espacio My y por otra, la carga directa del formulario. En estos dos casos, nos "saltamos" a la torera la instanciación propia, lo cuál nos acerca más a la filosofía Shared o Static.

Por no liarlo y dejarlo claro en dos pinceladas. A la hora de instanciar formularios, tenemos a groso modo las siguientes alternativas generales:

1.- Instanciamos un formulario y lo cargamos. Este es la forma tradicional de la orientación a objetos clásica y que es la usada en VB.NET 2002 y VB.NET 2003. También utilizada en VB 2005 por supuesto:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
Dim MiF As New Form2
    MiF.Show()
End Sub

2.- Utilizamos una instancia por defecto para cargar el formulario utilizando el nombre de espacio My (sólo para Visual Basic 2005):

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    My.Forms.Form2.Show()
End Sub

3.- Utilizamos una instancia por defecto para cargar el formulario de forma directa (sólo para Visual Basic 2005):

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form2.Show()
End Sub

Cabe destacar no obstante, que en el caso 1, la carga de formularios pertenece a un plano de instanciación general, es decir, que si repetimos esa acción n veces, se cargarán n formularios.

En los casos 2 y 3, la carga de formularios se realiza en los dos casos, bajo un carga de instancias por defecto, y por lo tanto, bajo un patrón singleton, es decir, que el formulario sólo se puede cargar una única vez. Por supuesto, si el formulario se cierra, podemos volver a cargarlo, pero sólo puede "vivir" una instancia de ese formulario en memoria.

De todo esto, las conclusiones son claras:
Microsoft, a la hora de escribir nuestras aplicaciones en VB para .NET, nos da la posibilidad de escribir nuestro código pensando en la compatibilidad del lenguaje o evitando esa compatibilidad. Nosotros tomamos esa decisión.
Los desarrolladores que dan el salto de VB a .NET, se sienten más cómodos con estas "compatibilidades" y su productividad a corto plazo es mayor.
Por contra, los desarrolladores que dan el salto a .NET y quieren usar VB como lenguaje, tienen el riesgo de perder la perspectiva general y la filosofía de la programación orientada a objetos.
Los desarrolladores que dan el salto a .NET y se familiarizan rápidamente con el lenguaje VB porque siguen usando la compatibilidad del lenguaje, no se acostumbran con rapidez a las buenas prácticas y les cuesta más tiempo adoptar esa forma de trabajar.
Un programador o desarrollador que utiliza en sus desarrollos las librerías de compatibilidad de VB, posee mayores inconvenientes de pasar, usar o entender un código de C# o de VB.NET que utiliza las clases normales y directas de .NET y que huye de escribir código utilizando las técnicas y formas de compatibilidad del lenguaje.
Microsoft, ayuda a los desarrolladores de VB a dar el salto a .NET, pero pone en riesgo las malas prácticas y los malos hábitos, haciendo que esa adaptación responda a la típica frase de pan para hoy y hambre para mañana.
No sabemos en un futuro, que va a hacer Microsoft en .NET con respecto a VB. Si sigue apostando por esa "compatibilidad", nuestros desarrollos estarán bien encaminados porque asegurarán posibles actualizaciones o migraciones, pero nadie nos lo asegura, por lo que mi consejo es tratar de aprender a programar en VB para .NET puro, evitando el uso de ese tipo de compatibilidades.

Entiendo que nuevas características como los nombres de espacio como My o instanciación de formularios por defecto, son muy útiles para desarrolladores que tienen dificultades por adentrarse en .NET, reducen la curva de aprendizaje y aumentan la productividad a la hora de resolver un problema utilizando VB como lenguaje de desarrollo, pero personalmente no me parecen técnicas muy adecuadas. Los formularios son Shared o Static por defecto, el programador puede perder la conceptualidad general de la aplicación, y por otro lado, nos podemos hacer varias preguntas lógicas,... ¿que sentido tiene entonces que instanciemos los formularios?. ¿Realmente esta forma de trabajar es la adecuada o la correcta para un lenguaje orientado a objetos?. Yo por si acaso, sigo instanciándolos...

Supongo que para el gusto están los colores...

Published 15/1/2007 10:40 por Jorge Serrano
Archivado en:
Comparte este post:

Comentarios

Monday, January 15, 2007 7:08 PM por Jorge Serrano - MVP Visual Developer - Visual Basic

# Nuevo artículo :: Instanciando formularios en Visual Basic 2005

En esta ocasión, he preparado un artículo sobre la instanciación de formularios en Visual Basic 2005

Tuesday, January 16, 2007 9:44 AM por Augusto Ruiz

# Los singletons no son malos del todo...

Hola Jorge!

Buen artículo. Una pequeña reflexión: El hecho de que existan las instancias por defecto no tiene por qué ser simplemente un tema de compatibilidad. Creo que utilizado con un poco de criterio, puede ser una "feature" interesante.

En muchas aplicaciones existen formularios que son de instancia única. Es decir, que cuando queremos mostrar el formulario, muchas veces había que codificar la búsqueda de alguna instancia de ese formulario para activarlo y pasarlo a primer plano, y si no existía, mostrarlo.

La existencia de las instancias por defecto pueden venir bien para este tipo de formularios. VB nos proporciona el patrón Singleton en los formularios. La única pega que yo le veo es que este Singleton está "oculto", y que se puede no ser consciente de lo que se está haciendo.

Este es el típico ejemplo de característica interesante que si se utiliza mal puede convertir el código en algo infernal ;)

Saludos!

Tuesday, January 16, 2007 10:10 AM por Jorge Serrano

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola Augusto.

Para crear un formulario singleton en VB para .NET, basta con hacer algo así por ejemplo:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Instancia.Show()

End Sub

Private Shared _instancia As Form2 = New Form2

Public Shared Property Instancia() As Form2

   Get

       Return _instancia

   End Get

   Set(ByVal value As Form2)

   End Set

End Property

El hecho de que existan instancias por defecto como nueva característica añadida a VB 2005, es mi opinión un tema de compatibilidad de VB, porque en VB6 y anteriores, podíamos instanciar un formulario directamente usando Formulario.Show(), cosa que no se podía hacer en VB.NET 2002 y VB.NET 2003, y eso, para un programador de VB6 es muy cómodo porque no le rompe los esquemas con respecto a la instanciación previa, al mismo tiempo que en mi opinión representa un grave riesgo de comprensión de la base de OOP y de buenas prácticas.

Sin embargo y como muy bien indicas, es una "feature" muy interesan y digna de tener en cuenta, pero también "tocas" el problema y el riesgo que conlleva hacer cosas sin saber "conscientemente" lo que realmente se está haciendo. Ese el riesgo más alto que veo en el uso de las instanciaciones por defecto y no que su uso sea a veces interesante.

Lo que quería poner de manifiesto sobre todo, es que cuando somos nosotros los que hacemos que un formulario sea de instancia única, lo controlamos nosotros mismos, mientras que si VB 2005 nos permite hacer esto sin tener claro que lo está haciendo, podemos perder cierto control y visión, y lo que es peor, la percepción, la lógica de la aplicación y su comportamiento real.

Tuesday, January 16, 2007 10:54 AM por Augusto Ruiz

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Completamente de acuerdo.

Lo único que cambiaría es hacer la propiedad Instancia a ReadOnly, quitando el Set vacío ;)

Saludos!

Tuesday, January 16, 2007 11:59 AM por Jorge Serrano

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Sí, correctísimo.

Lo he dejado vacío para dar el empaque general de la funcionalidad, pero sí, siendo más precisos, la instancia debe ser ReadOnly como muy bien indicas. :-)

Private Shared _instancia As Form2 = New Form2

Public Shared ReadOnly Property Instancia() As Form2

   Get

       Return _instancia

   End Get

End Property

Tuesday, January 16, 2007 12:11 PM por Jorge Serrano

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Perdón perdón... analizando el código... y para ser aún más precisos si cabe... de manera que cualquiera lo pueda comprobar...

Public Shared _instancia As Form2 = New Form2

Private ReadOnly Property Instancia() As Form2

   Get

       Return _instancia

   End Get

End Property

Ahora sí que sí... (sobraba el Shared de la propiedad). :-)

Para llamarlo por ejemplo desde un botón:

If _instancia Is Nothing Then _instancia = New Form2

Instancia.Show()

Y en el Form2, pondríamos por ejemplo:

Private Sub Form2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

   Form1._instancia = Nothing

End Sub

Thursday, January 18, 2007 7:00 PM por Enrique Martínez «SoftJaén»

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola, Jorge:

Desearía hacer sólo un comentario, sobre la forma de establecer el valor «Nothing» a la instancia del formulario «Singleton».

En lugar de establecer el valor Nothing en el evento «FormClosed» del formulario Form2, ¿qué te parece si declaramos la variable pública «_instancia» con eventos?:

Public Shared WithEvents _instancia As Form2 = New Form2

De ésta manera, controlaríamos todo el proceso desde la propia clase encargada de crear e instanciar el formulario singleton:

Private Shared Sub _instancia_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles _instancia.FormClosed

  ' Se ha cerrado el formulario Singleton

  _instancia = Nothing

End Sub

De ésta manera, al igual que la clase es la responsable de crear una única instancia del formulario singleton, también se encargaría de comprobar si dicho formulario ha sido cerrado, para poder actuar en consecuencia.

Un saludo y enhorabuena por el Blog, que hasta ahora no había tenido oportunidad de visitarlo. :-)

--

Enrique Martínez

Sunday, January 21, 2007 10:20 AM por Jorge Serrano

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

¡Hola Enrique!. :-)

Toda la razón.

Es otra forma de hacerlo y quizás más limpia.

Lo que está claro es que en esto de la programación, por suerte no sólo hay un camino de hacer las cosas.

Muchas gracias por compartirlo con todos. :-))

Un abrazote.

Saturday, July 21, 2007 8:45 AM por José Atilio Martinez

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola A todos, Ayuda por favor

Soy programador en Visual Foxpro y tengo dias de estarme involucrando con Visiual Basic 2005, ya he empesado a hacer algunos formularios y tengo una Duda en los Tipo Maestro Detalle

Tengo una tabla Encabezado de factura y otra detalle. Dichas tablas las relaciono por el Numero de Factura y el Tipo de factura es un undice Compuesto dicho el termino en visual foxpro  he desarrolado todo identico al ejemplo que se da en MSDNVIDEO de crear todo automaticamente al final de arrastrar la maestra en tipo detalle y luego en arrastrar la detalle en tipo datagrid el problema se me da cuando le doy insertar, por supuesto que me abre el registro en la tabla maestro  para adicionar datos pero en la detalle me tira el error que no puedo dejar los datos en blanco de numero de factura y de Tipo de factura la pregunta es ¿COMO INSERTO UN REGISTRO EN UN DATA GRID Y COMO REEMPLAZO LOS DATOS DE NUMERO Y TIPO DE FACTURA DIRECTAMENTE AL INSERTAR EL REGISTRO ?  

AGRADECERIA SU VALIOSA AYUDA

jams_siga_jams@hotmail.com

Saturday, August 25, 2007 5:05 AM por hernan

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

mas practicas y menos teoria,practicas de creacion de formularios?

Saturday, October 20, 2007 10:49 PM por VERONICA

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

PUEDES PONER LA SINTAXIS DEL COMANDO MSBOX Y TAMBI{EN COMO FUNCIONA VARIACIONES  COMO FUNCIONA

Saturday, October 20, 2007 10:49 PM por VERONICA

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

PUEDES PONER LA SINTAXIS DEL COMANDO MSBOX Y TAMBI{EN COMO FUNCIONA VARIACIONES  COMO FUNCIONA

Tuesday, November 6, 2007 7:10 AM por Wagner

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola, quisiera saber como al momento de cerrar mi aplicación me saliese una ventana de dialogo que diera la opcion de salir o no, bueno lo e intentado, pero siempre se sale de la aplicación.

Private Sub Principal_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

       Dim dr As DialogResult = MessageBox.Show("Esta seguro de Salir del Sistema", "SITS", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

       If System.Windows.Forms.DialogResult.Yes = dr Then

           Global.System.Windows.Forms.Application.Exit()

       End If

   End Sub

Sunday, November 25, 2007 10:07 PM por Alfredo Martinez

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola Jorge, recibe un cordial saludo desde Mexico, creo que llegue tarde a la discusion sobre instanciar formularios singleton, pero quiero aportar un comentario al codigo que tan generosamente comparten con nosotros para saber que les parece, que tal si en lugar de poner la comprobacion de nothing en boton con  el que se llama al formulario, se deja en la misma propiedad quedando de este modo:

Public Shared WithEvents _instancia As Form2 = New Form2

   Public Shared Sub _instancia_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles _instancia.FormClosed

       _instancia = Nothing

   End Sub

   Public Shared ReadOnly Property Instancia() As Form2

       Get

           If _instancia Is Nothing Then _instancia = New Form2

           Return _instancia

       End Get

   End Property

Asi sigue siendo la misma clase la que se encarga de todas las comprobaciones y se le llama de una manera mas limpia.

Friday, May 16, 2008 11:39 PM por edwin

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hola, justo tengo un trabajo que resolver sobre este tema por favor  quisiera que me digas  como se instancia un metodo u objetos de una clase a un formulario (cliente)claro que despues de hacer una referencia  entre estas .A y si me puedes dar algunos que ejemplos que pueda entender . por favor estare esperando la respuesta  gracias.  mi correo sagitauro2000@hotmail.com

Thursday, May 22, 2008 6:02 AM por marcos

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

saludos, amigos necesito una pequeña ayuda de ustedes, yo tengo que desarrollar un proyecto que contenga un toolbar en el mdi(pantalla pricipal) y luego ese toolbar lo debo instaciar el retro de los formularios que tengo que crear en el proyecto, necesito ayuda con esto ya que soy novato con visual, gracias por la atención. marcosh89@hotmail.com

Wednesday, July 30, 2008 4:00 PM por edfiguer

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola. Quisera saber si existe alguna forma de evitar el parpadeo al mostrar un formulario, he probado con el doble buffer, pero no he conseguido una solucion satisfactoria. Gracias

Thursday, October 30, 2008 10:15 AM por Andrea

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Sí, pero si el objeto inicial es un Sub Main(), es igual cómo instancie el formulario, no funciona (aparece fugazmente y termina la aplicación).

Por favor ¿alguien puede decirme cómo hacer para que el formulario quede accesible?

Gracias

Monday, December 1, 2008 6:33 PM por Brasas

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola a todos, recibir cordiales abrazos desde Manitova, USA, creo que no llegue a la discusion sobre instanciar formularios charleston, pero quiero aportar un comentario al codigo que tan amablemente comparten con todos nosotros para saber si les gusta, que tal si en lugar de poner la comprobacion de null en la caja de texto con  el que se llama al formulario, se deja en la misma propiedad quedando tal que asina:

Public Shared WithEvents _instancia As Form2 = New Form2

  Public Shared Sub _instancia_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles _instancia.FormClosed

      _instancia = Nothing

  End Sub

  Public Shared TextBox Property Instancia() As Form2

      Get

          If _instancia Is Null Then _instancia = New TextBox

          Return New TextBox

      End Get

  End Property

Asi sigue siendo el mismito TextBox el que se encarga de todas las comprobaciones y se le llama de una forma mas impactante.

Monday, January 5, 2009 12:38 AM por Alfredo

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Esta muy bien, pero una consulta aparte.. Como hago para instanciar un WebForm para asp.net 2.0

Friday, February 20, 2009 5:01 AM por José A.

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Estan muy buenos los aportes ya utilice la forma de instanciar y es efectiva. pero,

Tengo dos consultas espero que me puedan ayudar.

1). Yo tengo un formulario MDI el cual llama a un formulario hijo en forma no modal y este a su vez tiene la opcion de llamar a un cuadro de dialogo el cual tiene un datagridview con opciones de insert,update y delete, el problema me surge cuando elimino el ultimo registro del datagridview me manda un error que dice "El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.

Nombre del parámetro: index" y me posiciona el foco en la linea de codigo en la cual yo hice la llamada  form2.ShowDialog().

2).el otro inconveniente que tengo es que cuando cierro esa ventanada de dialogo al regresar al formulario del cual la llame no realiza las funciones q mando sino las ejecuta hasta despues de se realice uno de los eventos de los controles que se tienen en el formulario.

bueno espero q me puedan ayudar...

de antemano muchas gracias.

email: lobo_30_2@hotmail.com

Wednesday, March 11, 2009 3:35 AM por yayo

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

no le entendi

Sunday, April 19, 2009 1:06 AM por josue

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hey esta buenos estos foros para mara que quiere intentar programar jijiij..

Saturday, May 2, 2009 12:03 PM por tonny

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola que tal me han dejado una tarea en la escuela y dice asi: a ver si por favor me pueden ayudar.

Como hacer para que en una MDI no se abra 2 veces la misma forma.

Como hacer que cuando vaya a salir del sistema y esta una forma abierta me pregunta si deseo cerrarlo o no.

Bueno es ésto y espero su atenta y pronta respuesta, gracias de verdad y hasta pronto.

correo: tonny.326_teamo@yahoo.com.mx

Thursday, May 21, 2009 5:54 PM por Gustavo Anchante

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Para hacer que el formulario no se te abra dos veces tendrias que aplicar el siguiente codigo:

En el form que quieres abrir:

Private Shared frmInstance As frm1= Nothing

Public Shared Function instance() As frm1

       If frmInstance Is Nothing OrElse frmInstance.IsDisposed = True Then

           frmInstance = New frm1

       End If

       frmInstance.BringToFront()

       Return frmInstance

   End Function

Para llamarlo desde el formulario padre

 Private Sub ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem.Click

       Dim fr As frm1= MyProyect.frm1.instance

       fr.StartPosition = FormStartPosition.Manual

       fr.MdiParent = Me

       fr.Show()

   End Sub

Espero haber ayudado... un saludo cordial para todos desde Ica-Perú y gracias a Jorge por poner tan claro este tema. salu2.

Friday, May 22, 2009 6:18 AM por rodri

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

primero que nada, quiero agradecer a todos, por que varias veces me paso en busca de soluciones y la encuentro aca, y esta noche me digne a escribir mi primer post je, con el siguiente problema:

tengo un juego terminado, 100% testeado, pero hasta ahora solamente lo depuro, y aqui la gran incognita, como hago para generar o publicar el juego, y que me aparescan todas las imagenes que carga, por que solo aparecen las que ya estan cargadas u ocultas, hay alguna forma que quede absolutamente todo en una sola carpeta, o bien, de forma que, cuando lo ponga en otra pc, lo pueda hacer correr sin ningun problema, hablando en el 2005 claro, yo lo logre hacer,pero cambiandole en la codificacion, el destino de las imagenes.

Monday, July 6, 2009 7:31 PM por Concepcion Cruz Martinez

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola q tal, estoy realizando un proyecto

el el cual tengo un mdi en el cual tengo un menustrip los un ejenplo  tengo como encabezado

Catalagos y dentro de este personal, puestos, departamentos etc cada uno de estas llama a otra forma q es el hijo pero dentro del hijo tengo opcion de buscar, agregar, mofificar, borrar, y al llamar el boron de agregar o modificar llamo a un tercer formulario lo q requiero y es mi duda es q al momento de q abra un formulario hijo bloque la forma mdi, si al abrir una de las opciones  del formulario hijo

se bloque el formulario hijo o q no me permita abrir dos veces o mas la misma forma, ademas  q el tercer formulario quede dentro del mdi, ojala me puedan ayudar mil gracias. este es mi correo ccruz@tranportesvencedo.com.mx o conchis_160585@hotmail.com

Tuesday, July 7, 2009 2:37 PM por sandra

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

HOLA!!

estoy realizando un proyecto me gustaria, si me pueden ayudar tengo hacer la funcion salir de mi memu de VB que codigo fuente???,y que me haga la pregunta si deceo salir ??  si, no o cancelar..

gracias por la ayuda!!

mi correo es sanchez_sandra20@yahoo.com.mx

saludos

Wednesday, August 26, 2009 3:12 AM por Juan sanchez

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hey como hago para hacer formularios visual studio 2005

Thursday, December 31, 2009 6:11 PM por Jorge Torres

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Bueno, qué puedo decir, ¡ Qué buen artículo !

Gracias por todo, me sirvió de mucho.

Tuesday, February 9, 2010 7:29 PM por Susana

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hola!! buenas tardes... quisiera preguntarles sobre un problema que tengo en visual basic, ya lo instale solo que alhacer formularios me los guarda, pero al momento de abrirlo directamente de visual o aunque sea de la carpeta de los proyectos, no los abre osea no me los muestra, solo los puedo ejecutar  y es asi como se puede ver, pero no puedo modificar, cual sera el problema, tengo sis operativo xp.... se los agradeceria si me podrian ayudar......

susanag451@gmail.com

Wednesday, February 10, 2010 1:55 AM por Rouderick

# Volver a un formulario anterior en visual basic

Quiero saber cual es el codigo para volver de un formulario a otro si quiero volver pero en Visual Basic

Ing. Marck

Thursday, February 25, 2010 5:36 PM por Pato H

# re: Visual Basic 2005 :: Problemas al momento de compilar

Saludos cordiales amigos y gracias por su aporte al desarrollo de software...Tengo una pregunta, estoy realizando un aplicación MDI con varios forms hijos en VB .Net, todo estaba bien cuando cierto día volvi a rediseñar la interfase de un formulario hijo, y los cambios en diseño y código me lo permiten hacerlo, pero el momento de ejecutar la aplicación me abre el formulario anterior sin cambios, he vuelto a generar el proyecto y nada sigue cargando el formulario anterior...¿es problema de archivo? he tenido que recuperar un respaldo anterior y hacer nuevamente los cambios y lo logré, pero tengo esta gran duda ya que no quisiera que me vuelva a suceder....

Agradeceré mucho su ayuda.

phumanante@hotmail.com

Wednesday, April 28, 2010 6:17 PM por fernandoalave

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hola me llamo fernando

y queria saber como puedo abrir un documento  de word ,power point, un video

en visual

Monday, August 16, 2010 5:03 AM por The Sanz

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hey queria saber como es el codigo de programacion en visual 2008

porke deje elvisual 6 y pues en el 2008

cambio mucho

bueno si no es molestia me podrian enviarme un

mensaje :D

victor_sanz9@hotmail.com

Tuesday, September 28, 2010 3:22 AM por Juan Ramon

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

hola amigo necesito ayuda mira tengo el visual basic 2006 entonces tengo un boton en un formulario que se llama aceptar, entonces quiero que al momento que corra el programa al darle click me abra una nueva ventana no ce mmmm este error no existe o asi?.. n

Monday, November 1, 2010 7:46 PM por Ariel Martinez

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Hey este sitio esta buenisimo, tengo una duda

lo que pasa es que no se como llamar a un texbox de otro formulario y ponerle el valor a una etiqueta(label) lo que queirp es k aparezca el nombre del usuario en el formulario dos

pero no se como hacerlo

por favor ayudenme!!

Thursday, March 24, 2011 7:36 PM por geralddd

# re: Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

muy facil si deseas enviar un valor a un formulario lo puedes hacer asi:

formulario1.nombre.text= "valor"

esto lo pones en el formulario2 i viceversa o puedes usar una variable global