none
¿como refrescar una ventana desde otra ventana?

    Pregunta

  • Hola, tengo un programa de un hotel, mi primera ventana ( Form1 ) muestra las 16 habitaciones.


    Al yo darle clic a alguno de los botones (verdes que son las habitaciones disponibles) se me abre otra ventana (ContratosGenerales) con un formulario.


    Bien, pues LO QUE NECESITO ES que al darle click en guardar en la ventana de ContratosGenerales si todo el proceso de insertar es EXITOSO, la ventana Form1 con las habitaciones, se me refresque para que así el método LOAD de esa ventana ( Form1 ) me cargue de nuevo la función de comprobar habitaciones ocupadas y disponibles que tengo, y así me pinte los Buttons por defecto....es todo.

    ¿qué debo hacer?

    Gracias.

    miércoles, 4 de julio de 2018 22:34

Todas las respuestas

  • Lo más fácil sería pasar una referencia del formulario padre al hijo.  Así el hijo puede informar al padre que algo ha sucedido (bueno o malo) y el padre puede actuar conforme el resultado.

    //El form hijo recibe una referencia del padre cuando se crea.
    //Esto sería código del botón verde.
    Form2 f2 = new Form2(this);
    f2.Show(); //o ShowDialog()
    
    
    //Y este sería Form2:
    public partial class Form2 : Form
    {
        private Form1 ParentForm { get; }
    
        public Form2(Form1 parentForm)
        {
            ParentForm = parentForm;
        }
    
        //En el método que guarda, podemos acceder a los métodos y propiedades de Form1.
        private void GuardarOLoQueSea()
        {
            //Guardamos.
            bool exito = ...;
            if (exito)
            {
                ParentForm.EliminarEstaHabitacionPorqueEstaReservada();
            else
            {
                ParentForm.AlgoMasCuandoNoSeReservaExitosamente();
            }
        }
    }
        }
    }

    Sin embargo, también existe la posibilidad de vincular a datos.  Pero sin saber mejor cómo trabaja su aplicación, pues no puedo darle algo concreto.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    miércoles, 4 de julio de 2018 22:58
    Moderador
  • hola

    >>al darle click en guardar en la ventana de ContratosGenerales si todo el proceso de insertar es EXITOSO, la ventana Form1 con las habitaciones, se me refresque

    si la ventana se abre como modal solo es cuestion de poner el codigo que recargue los datos justo a continuacion del ShowDialog()

    o sea

    ContactosGenerales.ShowDialog();
    
    //aqui recargas los datos del form1

    recuerda que el show dialog detiene la eejcucion en ese punto y no continua hasta que se cierra el form

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de julio de 2018 20:20
  • Gracias por responder, la cuestión es que soy nuevo en C#, la pregunta es, ¿cómo hago para que se recargue si el proceso es exitoso? entiendo lo del ShowDialog, pero ¿y cómo hago para que se refresque el primer form? la idea es que se refresque para que se vuelva a cargar el LOAD de ese form...
    jueves, 12 de julio de 2018 17:19
  • Voy a suponer que usas base de datos para cargar las habitaciones disponible en el Form1. Lo que podrias hacer es que cuando abras el formulario ContratosGenerales y realices todos tus pasos en ese formulario, pues cuando lo cierras ejecutas el metodo que usas para cargas las habitaciones disponibles. Solamente debes abrir ContratosGenerales en modo Dialog. Asi:

    ContratosGenerales.ShowDialog(); <-- Aqui es formulario estara abierto y el usuario tendria que terminar primero de usar esa ventana para poder trabajar con otra, asi que luego cuando se cierre solamente cargar nuevamente tu consulta.

    private void btn1_Click(object sender, EventArgs e) { ContratosGenerales.ShowDialog();

    CargasHabitacion(); }

    viernes, 13 de julio de 2018 12:17