none
Manejo de Formularios

    Question

  • Buenas tardes; tengo la siguiente consulta, como hago para mostrar y ocultar formularios.. probe con lo siguiente y no me resulto

    frmBienvenida frm1 = new frmBienvenida();
                        frmLogin frm2 = new frmLogin();
                        frm1.Show();
                        frm2.hide();

    la otra consulta es como hago para pasar el valor de una variable en otro formulario..

    y la ultima

    tengo dos formularios, frm1, y frm2. al hacer click en el boton de cerrar en el frm1, se deja de ejecutar la aplicacion, pero al hacer clik  en el boton cerrar del frm2, solo se cierra el formulario, y la aplicacion se sigue ejecutando, como podria manejar esto.

    Monday, July 26, 2010 4:45 PM

Answers

  • hola

    si quiere ocultar el form actual y mostrar uno nuevo debes usar la instancia actual

    frmBienvenida frm1 = new frmBienvenida();
    frm1.Show();

    this.hide();

     

    en este caso lo haces suando "this" que seria el frmLogin

    igualmente te recomendaria analices este link

    Login – Usando Password con Hash

    veras como se usa el metodo Main de Program.cs para realziar el login antes de lanzar el forma principa, asi no debes usar el Hide()

     

    Para pasar valores entre formulario podrias usar propiedades o el constructor del formulario

    en este articulo explico del tema

     

      Comunicar formularios de forma desacoplada

     

    tengo dos formularios, frm1, y frm2. al hacer click en el boton de cerrar en el frm1, se deja de ejecutar la aplicacion, pero al hacer clik  en el boton cerrar del frm2, solo se cierra el formulario, y la aplicacion se sigue ejecutando, como podria manejar esto

    el tema es que hay un formulario definido en el Applicacion.Run() dentro de Program.cs en el metodo Main() ese formulario es el definido como principal para manejar el thread de la aplciacion

    si cierras ese form la aplciacion termina, te recomendaria que apliques la tecnica del link anterior para realizar operacion antes de iniciar tu aplicacion

     

      Winforms, realizar tareas antes de inicializar aplicacion

     

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Edgar35 Monday, July 26, 2010 5:52 PM
    Monday, July 26, 2010 5:05 PM

All replies

  • hola

    si quiere ocultar el form actual y mostrar uno nuevo debes usar la instancia actual

    frmBienvenida frm1 = new frmBienvenida();
    frm1.Show();

    this.hide();

     

    en este caso lo haces suando "this" que seria el frmLogin

    igualmente te recomendaria analices este link

    Login – Usando Password con Hash

    veras como se usa el metodo Main de Program.cs para realziar el login antes de lanzar el forma principa, asi no debes usar el Hide()

     

    Para pasar valores entre formulario podrias usar propiedades o el constructor del formulario

    en este articulo explico del tema

     

      Comunicar formularios de forma desacoplada

     

    tengo dos formularios, frm1, y frm2. al hacer click en el boton de cerrar en el frm1, se deja de ejecutar la aplicacion, pero al hacer clik  en el boton cerrar del frm2, solo se cierra el formulario, y la aplicacion se sigue ejecutando, como podria manejar esto

    el tema es que hay un formulario definido en el Applicacion.Run() dentro de Program.cs en el metodo Main() ese formulario es el definido como principal para manejar el thread de la aplciacion

    si cierras ese form la aplciacion termina, te recomendaria que apliques la tecnica del link anterior para realizar operacion antes de iniciar tu aplicacion

     

      Winforms, realizar tareas antes de inicializar aplicacion

     

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Edgar35 Monday, July 26, 2010 5:52 PM
    Monday, July 26, 2010 5:05 PM
  • Buenas:

    En el primer codigo fijate que estas haciendo un Show del frm1 y un hide del frm2. Si queres mostrar y ocultar un formulario tenes que hacer eso pero para la misma instancia. Osea:

    frmBienvenida frm1 = new frmBienvenida();

    frm1.Show();

    frm1.Hide();

    Con la segunta consulta. Si el primer formulario es el que inicia la aplicacion obviamente se te va a cerrar la aplicacion. Supongo que el segundo formulario lo estas abriendo desde el primer formulario. Como todavia hay un formulario abierto no se te cierra la aplicacion. No se que es exactamente lo que queres lograr, pero digamos que ese es el comportamiento logico de los formularios. El formulario principal es el que mantiene la ejecucion del programa.

    Saludos.

    Sparow

    Monday, July 26, 2010 5:06 PM
  • la primera pagina es la de login, lo que no que no quiero es volver a ese formulario para terminar la aplicacion
    Monday, July 26, 2010 5:12 PM
  • Bueno es justamente lo que Leandro te decia. En el link que te puso esta muy bien explicado. Antes de iniciar hacer el Application.Run() deberias haber mostrado el formulario de Login y en caso de que el usuario se loguee correctamente recien ahi, inicia la aplicacion.

    Sparow

    Monday, July 26, 2010 5:17 PM
  • Buenas tarde; he hecho algunas cosas  las cosas que me han dicho, pero todavia no logro pasar de una form a otro los valores de una variabl; tratare de explicarles;

    Tengo un formulario de Login , que  que tiene dos textbox(txtUsuario , y txtContraseña) lo que quiero es pasarle al formulario de bienvenid a los datos que se guardan el txtUsuario , he puesto los codigo en el program.cs como me lo indicaste

     static void Main()
            {

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                frmLogin login = new frmLogin();
                login.ShowDialog();
                if(login.DialogResult == DialogResult.OK)
                     
                        Application.Run(new frmBienvenida());

    y en mi formulario de login:

    command.Parameters.AddWithValue("@user", txtUsuario);
                    command.Parameters.AddWithValue("@pass", );
      
                    SqlDataReader reader = command.ExecuteReader();
                    reader.Read();
                    String cantidad = reader["cantidad"].ToString();

    if (cantidad.Equals("1"))
                    {

                     
                       
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }

    lo que quiero es poder enviar al frmBienvenida,  el valor que esta en el txtUsuario para poder guardar la session del usuario,para de acuerdo a eso darle privilegios dentro del programa

     

    Monday, July 26, 2010 8:30 PM
  • hola

    crea una propiedad en frmBienvenida

    luego has lo siguiente

    frmBienvenida frm = new frmBienvenida()

    frm.NombreUsuario = login.NombreUsuario;

    Application.Run(frm);

     

    como veras NombreUsuario serian las propeidades que ambos formularios exponen

    tanto para tomer como para asignar los valores

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, July 26, 2010 8:35 PM
  • Disculpame la ignorancia pero como creo una propiedad?
    Monday, July 26, 2010 8:40 PM
  • si estas usando VS2008 con .net 3.5

    podrias hacerlo

    public NombreUsuario { get; set; }

     

    pero en el link

    Comunicar formularios de forma desacoplada

    esta mejor explicado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, July 26, 2010 8:43 PM