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…
38 Responsesso far
En esta ocasión, he preparado un artículo sobre la instanciación de formularios en Visual Basic 2005
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!
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.
Completamente de acuerdo.
Lo único que cambiaría es hacer la propiedad Instancia a ReadOnly, quitando el Set vacío 😉
Saludos!
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
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
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
¡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.
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
mas practicas y menos teoria,practicas de creacion de formularios?
PUEDES PONER LA SINTAXIS DEL COMANDO MSBOX Y TAMBI{EN COMO FUNCIONA VARIACIONES COMO FUNCIONA
PUEDES PONER LA SINTAXIS DEL COMANDO MSBOX Y TAMBI{EN COMO FUNCIONA VARIACIONES COMO FUNCIONA
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
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.
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
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
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
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
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.
Esta muy bien, pero una consulta aparte.. Como hago para instanciar un WebForm para asp.net 2.0
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
no le entendi
hey esta buenos estos foros para mara que quiere intentar programar jijiij..
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
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.
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.
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
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
hey como hago para hacer formularios visual studio 2005
Bueno, qué puedo decir, ¡ Qué buen artículo !
Gracias por todo, me sirvió de mucho.
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
Quiero saber cual es el codigo para volver de un formulario a otro si quiero volver pero en Visual Basic
Ing. Marck
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
hola me llamo fernando
y queria saber como puedo abrir un documento de word ,power point, un video
en visual
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 😀
victor_sanz9@hotmail.com
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
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!!
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