Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/02/2016, 15:26
Gerard93
 
Fecha de Ingreso: mayo-2015
Ubicación: Nicaragua, Diriamba
Mensajes: 48
Antigüedad: 9 años
Puntos: 1
Respuesta: Sobre Windows Forms Apps

Cita:
Iniciado por EricNG39 Ver Mensaje
La primera duda que me ha detenido durante un tiempo es la siguiente:
Como puedo controlar bien la apertura y el cierre de formularios???
En especifico he tratado de cerrar un formulario desde otro y no puedo.
el metodo Close() invocado en cualquier instancia de un form a resultado cerrar la aplicacion y no se como manejar el acceso a las propiedades de un formulario desde otro.
Por ejemplo, como puedo ocultar un boton en un formulario al seleccionar una opcion en otro ???
ni siquiera se si es posible pero supongo que si y me gustaria saber como trabajar en general con las caracteristicas de un formulario desde otro...
Agradecido de antemano
Si estamos hablando de C# todo tiene que ver con los modificadores de acceso (Public, private, protected etc....etc.....etc....)
Para abrir y cerrar forms desde otros puedes trabajar con la misma instancia del form para ello esta funcion te será útil

Código:
 
        private static Form InstanciaHija = null;
        public static Form Instancia()
        {

            if (InstanciaHija == null || InstanciaHija.IsDisposed == true)
            {
                InstanciaHija = new Form();
            }
            InstanciaHija.BringToFront();
        return InstanciaHija;
        }
Dond "Form" es el nombre de tu formulario, y listo supongamos que estoy en el codigo del Form1 y declaro esa funcion en Form2 para poder manipular Form2 lo unico que tengo que hacer en Form1 es declarar un tipo Form2 e inicializarlo invocando la funcion que me regresara la instancia de Form2 si no existe la creará si ya existe me la mandará y listo.

Código:
Form2 frm1 = Form2.Instancia();
            frm1.Show// o puede ser .close a como sigue
            frm1.Close()
Ahora con las propiedades del formulario, tambien depende del nivel de acceso por ejemplo si quiero manipular un boton de Form2 desde Form1 entonces tendré que dejarle un modificador publico al boton desde form2, eso lo puedes ver en el diseñador en el recuadro de propiedades del objeto bajo la propiedad "Modifiers".

Una cosa mas, con este codigo estarias trabajando con una instancia estatica es decir que a menos que la cierres nunca cambiara porque es estatica, por ejemplo si oculte el boton de Form2, y en mi codigo mando a cerrar Form2 de esta manera frm1.Hide() (No lo estoy cerrando lo estoy ocultando) la proxima vez que le des frm1.Show() el boton no aparecera puesto que lo ocultast anteriormente, si en vez de hide utilizo close (frm1.Close) entonces mi instancia muere y cuando invoce de nuevo frm1.Show() el boton estara ahi porque es una nueva instancia no es con la que trabaje (es decir ya no es carlos es carlos2.....no se si me explico).

Espero haberme explicado , espero te sirva

Saludos!

Link: http://www.mediafire.com/download/xf...m/AyudaForo.7z

Última edición por Gerard93; 05/02/2016 a las 15:54 Razón: Una cosa mas...2... Adjunto un enlace con un ejemplo :)