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

Acceder a métodos de formulario activo,

Estas en el tema de Acceder a métodos de formulario activo, en el foro de .NET en Foros del Web. Hola Colegas, alguien me podra orientar de como acceder a métodos de formulario activo, algo similar a lo que muestro aquí que esta echo en ...

  #1 (permalink)  
Antiguo 17/04/2009, 08:10
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Pregunta Acceder a métodos de formulario activo,

Hola Colegas, alguien me podra orientar de como acceder a métodos de formulario activo, algo similar a lo que muestro aquí que esta echo en VB6

Código:
        Case "Agregar"
            Call Screen.ActiveForm.Agregar
        Case "Quitar"
            Call Screen.ActiveForm.Quitar
        Case "Refrescar"
            Call Screen.ActiveForm.Refrescar
        Case "Guardar"
            Call Screen.ActiveForm.Guardar
Los métodos de Agregar, Quitar, Refrescar y Guardar estarán como Públicos en los formularios hijos, pero no se como se pueda hacer de esta manera para que sea algo genérico.

Gracias.

PD: si alguien tuviese algún ejemplo.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #2 (permalink)  
Antiguo 17/04/2009, 13:18
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

chetos, ultimamente me contestan muy poco sera que mis dudas son muy simples y les da weva escribir jejeje
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #3 (permalink)  
Antiguo 17/04/2009, 14:00
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Voy a replantear, tengo un Menú con un MDI con diferentes opciones, cada una de las opciones abre un formulario y lo instancio de la siguiente manera:

En el formulario hijo declaro esto:
private static frmHijo frmInstance = null;

El constructor lo pongo de Public a Private y creo el siguiente metodo:
Código:
public static frmHijo Instance()
{
if (((frmInstance == null) || (frmInstance.IsDisposed == true)))
{
      	frmInstance = new frmHijo();
}
      	frmInstance.BringToFront();
            return frmInstance;
}
Esto para que si ya esta instanciado pues ya no lo instancie:

Y lo invoco desde el MDI de la siguiente manera:
frmHijo _frmHijo = frmHijo.Instance();
frmHijo.MdiParent = this;
frmHijo.Show();

y ya lo abre, hasta ahí todo bien, dentro de los formularios hijos tengo metodos publicos, Guardar, Actualizar, etc., etc.


Ahora supongamos que tengo 5 formularios abiertos y en mi MDI tengo el boton de guardar.

Al dare al boton click en el menu del MDI como puedo accesar a los metodos publicos de los hijos, yo se cual es el hijo que esta activo y podria hacer lo siguiente:
frmHijo.Save();

Pero quiero hacer algo mas generico para no hace condiciones, no se si me de a entender, alguien que me oriente?



Gracias.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #4 (permalink)  
Antiguo 17/04/2009, 15:54
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

y la opcion de la interfaz que no la pudiste implementar???
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 17/04/2009, 15:58
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

aahh simon, ya no me acordaba de eso jejejee chetos!!

GRACIAS por contestar Peter, al parecer eres el mas chembeador
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #6 (permalink)  
Antiguo 17/04/2009, 17:10
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Jalo con mother Peter, muchísimas gracias we!!!

Tengo N módulos en una solución y acceso a todos los métodos de todos los formularios según el que este activo.



Tema Cerrado.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #7 (permalink)  
Antiguo 20/04/2009, 12:50
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Hola Peter, colegas, Tengo una interfase que se llama IDatos la cual contiene métodos;
Void Save()
Void Refresh()
Void X()
Void Y()
Los formularios heredan los métodos de esa interfase
Public partial class frmFacturas : Form, IDatos

Pero no todos los formularios tienen esos métodos, es decir, un formulario solo implementara el Refresh() y X() otro todos y así, pero el problema surgen cuanto un formulario no implementa todos los métodos de la interfase, ¿como evitar que me de ese error sin tener que hacer una Interfase para cada formulario?

Gracias.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #8 (permalink)  
Antiguo 20/04/2009, 13:40
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

entonces en lugar de una interfaz solo usa una clase abstracta y que solo hagas un override de los metodos que cada clase deba implementar, en la interfaz todos deben ser implementaods en la clase abstracta no.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #9 (permalink)  
Antiguo 20/04/2009, 14:20
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

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

Última edición por mvazquez; 20/04/2009 a las 15:59
  #10 (permalink)  
Antiguo 20/04/2009, 16:11
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

algun ejemplo?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #11 (permalink)  
Antiguo 20/04/2009, 17:27
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

dejame monto algo en el blog en un par de horas hay mucha chamba por aca.

pero no cambia mucho mas que conceptualmente y que los metodos deben ser abstractos si son sobrecargables en la herencia.

te contacto en un rato
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 20/04/2009, 19:04
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Ya esta, gracias Brother........
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #13 (permalink)  
Antiguo 21/04/2009, 11:49
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

no se pudo montar nada en el blog por falta de tiempo pero solo tienes que poner los metodos como abstract en la clase abstracta del tipo form (para q no tengas problemas)

una public abstract class FormAbstracta y ahi definas tus metodos abstract los obligatorios para todos o sin abstract para que cada clase defina los que requiera es solo jugar con el concepto no hay mas, ejemplos no pongo porq si no no se aprende.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #14 (permalink)  
Antiguo 21/04/2009, 13:11
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

jejeje ya esta brother dejame lo intento y te informo, gracias caon !!! (es en buen onda)
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #15 (permalink)  
Antiguo 21/04/2009, 14:11
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Ya la tengo.......

Mi clase
public abstract class MethodsForms

Código:
    public abstract class MethodsForms
    {

        public abstract void Save();

        public abstract void Exit();
    }
Y desde mi MDI
Código:
((MethodsForms)this.ActivateMdiChild).Save();
Pero ahora en los formularios hijos cual es la syntax?

GRACIAS
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #16 (permalink)  
Antiguo 21/04/2009, 15:05
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

el detalle es q los formulario sno pueden tener herencia multiple por lo tanto

la clase MethodsForms debera heredar de Form y todas tus archivos de clases de cada form heredar de MethodsForms
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #17 (permalink)  
Antiguo 21/04/2009, 15:13
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Chetos creo que cada vez me enredo más jejeje

tengo mi clase abstracta , la cual hereda a Form
Código:
    public abstract class MethodsForms :Form 
    {
        public abstract void onSave();
        public abstract void onExit();
    }
Y en los formularios heredo a MethodsForms
Código:
public partial class frmFactores : MethodsForms
Pero vuelvo a lo mismo que con las Interfases, en frmFactores formularios hijos tengo que implementar todos los métodos que están en la clase MethodsForms
.....
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #18 (permalink)  
Antiguo 21/04/2009, 15:28
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

no por eso los metodos no deben ser abstract todos, solo los comunes para todos o todos los metodos sin abstract para q cada clase haga el override q mas le conviene.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #19 (permalink)  
Antiguo 21/04/2009, 15:52
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Okas.......

Nomas para que me orientes si voy bien porf...

Heredo a Form en mi clase abstracta y tengo el método onExit que ague gue se tiene que implementar y tengo onSave que ese no es obligatoria su implementación
Código:
    public abstract class ClaseBase : Form 
    {
        public abstract void onExit();
        public void onSave(){}
    }
Luego creo una clase por cada formulario siempre y cuando este requiera implementar algun metodo de la clase base el cual no es abstract
Código:
    abstract public class IFactores : ClaseBase 
    {
        public abstract void  onSave();
    }
y en el formularios heredo de IFactores
Código:
    public partial class Factores : IFactores
    {


        public override void onSave()
        {

        }

        public override void onExit()
        {
            
        }
 }

me supongo que hasta ahi vamos bien............



en mi MDI trato de ejecutar los metodos asi:
Código:
((ClaseBase)this.ActivateMdiChild).onSave();

pero me imagino que me falta algo porque me dice:

"No se puede convertir el grupo de métodos 'ActivateMdiChild' en tipo no delegado 'Interfaces.ClaseBase. ¿Intentó invocar el método?"

Algun comentario, gracias de antemano.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #20 (permalink)  
Antiguo 21/04/2009, 16:04
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

para que tantas interfaces,

una clase abstracta y ya


public abstract class ClaseBase : Form

y cada forma hijo que en vez de implementar

public class FormHijo: Form seria cambiarlo a public class FormHijo: ClaseBase

y solo implementas un override a tu metodo on save y las implementaciones de los metodos abstractos obligatorios.

PD: hay que leer mas sobre POO para no confundirse.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #21 (permalink)  
Antiguo 21/04/2009, 16:23
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Sip, tienes razon hay que leer, leer, leer
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #22 (permalink)  
Antiguo 27/04/2009, 14:08
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Hola colegas, Tengo que retomar el tema nuevamente, ya que no he podido solucionar mi necesidad.

Comentare de nuevo mi situación:

Tengo una solución que se llama General y tengo varios proyecto integrados a esa solución entre ellos uno que se llama Menú y ahi tengo un MDI desde el cual invoco a los formularios de los proyectos .

Tengo una clase Abstracta:

En esta clase abstracta heredo a Form
Código:
    public abstract class AClaseBase : Form
    {
        public abstract void onSave();   
    }
Y el nos formularios de cualquier proyecto heredo a AClaseBase:
Código:
public partial class Factores : AClaseBase

y hago override del metodo de la AClaseBase
Código:
        public override void onSave()
        {
            
        }

En en el MDI tengo el boton Save, pero no encuentro la manera de ejecutar el metodo onSave.

Con interfase lo hacia asi:
Código:
((IBase)this.ActiveMdiChild).onSave();
Pero con la AClaseBase Clase Abstracta no encuentro como, alguien que me oriente un poco, de antemano gracias.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #23 (permalink)  
Antiguo 27/04/2009, 14:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

pues de igual manera


((AbstractClass)this.ActiveMdiChild).CualquierMeto do();
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #24 (permalink)  
Antiguo 27/04/2009, 14:55
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Gracias Peter.

Fijate que ya lo habia intentado asi como lo comentas, pero me da el siguiente error:

((AClaseBase)this.ActiveMdiChild).onSave();
"No se puede convertir un objeto de tipo 'Promociones.Formas.frmFactores' al tipo 'Menu.Clases.AClaseBase'."

que estare haciendo mal?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #25 (permalink)  
Antiguo 27/04/2009, 14:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

codigo sr si no no se si estas heredando todas las clases involucradas
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #26 (permalink)  
Antiguo 27/04/2009, 15:03
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Ok........

Clase:
Código:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace Menu.Clases
{
    public abstract class AClaseBase : Form
    {
        public abstract void onSave();   
    }
}


Formulario:
Código:
namespace Promociones.Formas
{
    public partial class frmFactores : AClaseBase 
    {
        public override void onSave()
        {
            //Guarda info
        }
    }
}
Desde el MDI

using Menu.Clases;
Código:
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            ((AClaseBase)this.ActiveMdiChild).onSave();
        }

algo me ha de faltar......
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #27 (permalink)  
Antiguo 27/04/2009, 15:12
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

lo q veo es q estan en distintos namespaces , prueba que esten en el mismo si no es posible checa q este la referencia completa porq si no puede estar confundiendo la referencia.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #28 (permalink)  
Antiguo 27/04/2009, 15:18
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Si, esque son proyectos diferentes............ quien sabe si eso tenga que ver.

La idea es invocar desde el MDI formularios de N proyectos, de N namespaces

usando una interfase si me funciona.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #29 (permalink)  
Antiguo 27/04/2009, 15:26
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Acceder a métodos de formulario activo,

pues lo q puedes hacer es importar el namespace en tu codigo del otro

add reference y el proyecto y listo

para que la referencia sea completa a ((Menu.Clases.AClaseBase)this.ActiveMdiChild).onSa ve();
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #30 (permalink)  
Antiguo 27/04/2009, 15:33
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Acceder a métodos de formulario activo,

Sip, de echo ya lo tengo en el proyecto Menu donde tengo el MDI

using Menu.Clases;

y en el proyecto donde estan los formularios referencio la Dll de Menu.


no pues le seguire buscando, ojala alguien nos de su puntos de vista.....
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
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 22:05.