bombero_7 Posted May 28, 2014 Report Share Posted May 28, 2014 tengo solo una duda de como se debe abrir un formulario en visual basic net (version 2010) cual es la forma correcta??? form1.show o dim formulario as new form1 formulario.show alguna diferencia una de otra??? Link to comment Share on other sites More sharing options...
Variator Posted May 28, 2014 Report Share Posted May 28, 2014 Holasyo si es de una pantalla normal lo hago de la siguiente formaMy.Forms.[nombre_formulario].ShowDialog()o si es de un mdi de la siguiente forma: My.Forms.[nombre_formulario].MdiParent = Me My.Forms.[nombre_formulario].Show()espero que te sirva, saludos Link to comment Share on other sites More sharing options...
The Duke of Quakem Posted May 28, 2014 Report Share Posted May 28, 2014 (edited) On 5/28/2014 at 2:15 PM, Variator said: Holasyo si es de una pantalla normal lo hago de la siguiente formaMy.Forms.[nombre_formulario].ShowDialog() Solo un detalle: From.ShowDialog activa el formulario en forma modal. Esto es que no puedes acceder a los otros formularios o al formulario padre hasta que ése se cierre. Esto es útil para ventanas que muestran mensajes o si el formulario debe obligatoriamente obtener algún dato o confirmación del usuario. Por ejemplo, los mesajes de alerta de Windows son un tipo de formulario modal ya que bloquean la operación normal hasta que ésta se cierre. También los MessageBox son un tipo de formulario modal. De forma opuesta, Form.Show muestra el formulario pero no "bloquea" el form padre o los demás formularios del proyecto, por lo quen puedes volver atrás y trabajar en otro formulario o incluso abrir el mismo formulario varias veces sin problemas. Por ejemplo, cuando en Photoshop tienes varias imágenes abiertas, puedes trabajar en cada una por separado e incluso abrir mas ventanas nuevas, este es un tipo de formulario no modal, o abierto con Form.Show. El usar uno u otro dependerá siempre de cuál es el propósito, requerimientos y funcionalidad del formulario que estés desarrollando, y su interacción con el resto del proyecto. Edited May 28, 2014 by The Duke of Quakem Link to comment Share on other sites More sharing options...
Siu Posted May 28, 2014 Report Share Posted May 28, 2014 .net es orientado a objetos, Un formulario es un clase, por lo tanto siempre debes instanciarlos, por ende, está bien la combinación de ambas. Link to comment Share on other sites More sharing options...
Variator Posted May 28, 2014 Report Share Posted May 28, 2014 On 5/28/2014 at 3:14 PM, The Duke of Quakem said: On 5/28/2014 at 2:15 PM, Variator said: Holasyo si es de una pantalla normal lo hago de la siguiente formaMy.Forms.[nombre_formulario].ShowDialog() Solo un detalle: From.ShowDialog activa el formulario en forma modal. Esto es que no puedes acceder a los otros formularios o al formulario padre hasta que ése se cierre. Esto es útil para ventanas que muestran mensajes o si el formulario debe obligatoriamente obtener algún dato o confirmación del usuario. Por ejemplo, los mesajes de alerta de Windows son un tipo de formulario modal ya que bloquean la operación normal hasta que ésta se cierre. También los MessageBox son un tipo de formulario modal. De forma opuesta, Form.Show muestra el formulario pero no "bloquea" el form padre o los demás formularios del proyecto, por lo quen puedes volver atrás y trabajar en otro formulario o incluso abrir el mismo formulario varias veces sin problemas. Por ejemplo, cuando en Photoshop tienes varias imágenes abiertas, puedes trabajar en cada una por separado e incluso abrir mas ventanas nuevas, este es un tipo de formulario no modal, o abierto con Form.Show. El usar uno u otro dependerá siempre de cuál es el propósito, requerimientos y funcionalidad del formulario que estés desarrollando, y su interacción con el resto del proyecto. gracias por la correccion, siempre es bueno apender mas :D Link to comment Share on other sites More sharing options...
susodicho Posted May 29, 2014 Report Share Posted May 29, 2014 Para empezar, nunca me ha gustado mucho Visual Basic, estoy más acostumbrado a C#. Incluso me pareció raro que funcionara la forma:Form1.Show()Eso parece una llamada a un método estático, o sea, la parte Form1 se interpretaría como el nombre de una clase, y el Show() sería la llamada a un método que no requiere una instancia para llamarse. Sin embargo, no es eso lo que ocurre, Form1 es realmente una instancia de la clase Form1 :mmm: .Así que el código funciona porque se supone que por cada formulario que hay en un proyecto, hay una instancia de dicho formulario creada "mágicamente" (creo que en ninguna parte del código fuente vas a encontrar estas instancias declaradas explícitamente). Por lo tanto, el hecho que puedas mostrar un formulario sin tener que declarar un objeto previamente, es porque el lenguaje (VB.NET) ofrece un atajo para ello. El atajo en cuestión son las instancias predeterminadas.El problema con usar esta característica o "gracia" del lenguaje, es que te puedes mal acostumbrar. De hecho, en C# y otros lenguajes no existen las instancias predeterminadas, y eso puede darte problemas si, por ejemplo, tuvieses que migrar una aplicación VB.NET a otro lenguaje. Por ejemplo, en C#, la forma de hacer esto es: Form1 form1 = new Form1(); form1.Show();En este caso, Form1 es el nombre de la clase, y form1 es el nombre del objeto (instancia). Por convención, los nombres de tipos se escriben con mayúscula inicial, y los nombres de variables con minúscula. Sin embargo, en VB.NET ni siquiera hay diferencia entre mayúsculas y minúsculas, así que el código resulta aun más confuso. De hecho, la llamada para mostrar el formulario podría escribirse de cualquiera de estas maneras en VB.NET: Form1.Show() form1.Show() FORM1.Show()Así que yo te recomendaría que lo hagas de la forma habitual, es decir, creando una instancia primero y después llamando al método: Dim formulario As New Form1() formulario.Show()Nótese que yo también prefiero poner los paréntesis vacíos cuando no hay parámetros (creo que evita que los métodos se confundan con variables o propiedades). :huasonto: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now