Foros del Web » Programación para mayores de 30 ;) » .NET »

Comunicación entre instancia de un objeto y el Form principal.

Estas en el tema de Comunicación entre instancia de un objeto y el Form principal. en el foro de .NET en Foros del Web. Tengo un dilema que no hemos podido resolver y que trataré de explicar bien: 1) Hay una aplicación que tiene, obviamente, un formulario principal Mdi ...
  #1 (permalink)  
Antiguo 15/04/2010, 13:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Pregunta Comunicación entre instancia de un objeto y el Form principal.

Tengo un dilema que no hemos podido resolver y que trataré de explicar bien:

1) Hay una aplicación que tiene, obviamente, un formulario principal Mdi, del cual dependen, como MdiChildren, varios formularios.

2) Los formularios MdiChildren, a su vez, instancian dentro de ellos, objetos de ciertas clases creadas específicamente (es irrelevante para el problema qué son o hacen).

3) Esos objetos poseen ciertos métodos que necesitan abrir pequeños carteles de espera para que el usuario sepa que se está realizando un proceso y que debe esperar el resultado. Para ello se crean, dentro de esa clase, pequeñas ventanas que andvierten que se debe esperar.

4) Esas ventanas quedan por encima te toda la aplicación, pero también por encima de todas las aplicaciones que estén ejecutándose en la PC, lo que a los usuarios les resulta molesto cuando quieren poner nuestra aplicación en segundo plano: El cartel permanece encima y no es minimizable.

5) Según sabemos, se puede hacer que esos carteles queden en el mismo plano de la aplicación si y sólo si son creados en el Form principal y declarados como MdiChildren de él.

6) Una posibilidad es crear un método en el Form principal que cree, abra y/o cierre estos carteles, y usarlo desde los MdiChildren. Eso es sencillo y lo hacemos en otros casos, pero el asunto es cómo hacerlo desde un objeto instanciado dentro de esos formularios hijos.

Entonces el problema:

¿Cómo podemos lograr que desde un objeto creado dinámicamente dentro de un MdiChildren, invocar un método del Form principal?

Tener en cuenta, que la llamada debe ser hecha desde el código interno del objeto que se creó, y no desde el formulario donde está ese objeto.

Restricción fundamental:
Por conflictos potenciales con subprocesos programados ya en la aplicación no se pueden usar Timer para verificar estado de variables globales o locales

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #2 (permalink)  
Antiguo 15/04/2010, 13:47
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 5 meses
Puntos: 8
Respuesta: Comunicación entre instancia de un objeto y el Form principal.

Hola, si, si se entiende.....

Ya intentaste con algun metodo virtual en lguna clase abstracta?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #3 (permalink)  
Antiguo 15/04/2010, 13:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Comunicación entre instancia de un objeto y el Form principal.

El problema es comunicar esa clase abstracta con el Form Main... que es el que contendría el método a invocar.
¿Has hecho algo parecido o que pueda servir de referencia?

Acepto ejemplos y sugerencias varias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/04/2010, 14:44
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 5 meses
Puntos: 8
Respuesta: Comunicación entre instancia de un objeto y el Form principal.

Sí, tengo un MDI con botones de Guardar, Eliminar, etc, etc.,
Tengo una clase abstract con métodos virtuales.
tengo Formularios que tienen el método de Guardar, Eliminar.

Clase Abstract
Código:
    public abstract class cBase : Form
    {
        /// <summary>
        /// Método de ejecucion de proceso donde se guarda información.
        /// </summary>
        public virtual void onSave() { }
   }
Evento del Boton Guardar en el MDI
Código:
private void iSave_ItemClick(object sender, ItemClickEventArgs e)
{
   
        ((cBase)this.ActiveMdiChild).onSave(); 
 }
Evento Guardar en el formulario.
Código:
public override void onSave()
{
}
Los formularios heredan a la clase abstract cClase y los métodos virtuales que tiene esa clase tienen que implementarse en cada uno de los formularios que herede a cClase
Aunque no es específicamente tu caso pero puedes aplicarlo a la inversa, te podría servir.

Espero poder ayudarte.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."

Etiquetas: instancia, objeto, principal, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:50.