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

MDI & Hijos.

Estas en el tema de MDI & Hijos. en el foro de .NET en Foros del Web. Hola buen día….. Tengo un menú con MDI en el cual tengo; MenStrip ToolStrip En ToolStrip tengo los botones de Guardar, Eliminar, etc., etc., y ...
  #1 (permalink)  
Antiguo 27/08/2008, 08:09
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 4 meses
Puntos: 8
Pregunta MDI & Hijos.

Hola buen día…..

Tengo un menú con MDI en el cual tengo;
MenStrip
ToolStrip

En ToolStrip tengo los botones de Guardar, Eliminar, etc., etc., y dentro de ese MDI abro N formularios hijos, necesito que TODOS los formularios HIJOS (El que este activo) puedan cachar el evento Click de los botones Guardar, Eliminar, etc., etc.,

Alguien ha hecho algo similar o tiene alguna idea que me pudiese orientar?

De antemano se los agradezco.
  #2 (permalink)  
Antiguo 27/08/2008, 10:01
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 21 años, 3 meses
Puntos: 53
Respuesta: MDI & Hijos.

Cita:
Iniciado por mvazquez Ver Mensaje
Hola buen día…..

Tengo un menú con MDI en el cual tengo;
MenStrip
ToolStrip

En ToolStrip tengo los botones de Guardar, Eliminar, etc., etc., y dentro de ese MDI abro N formularios hijos, necesito que TODOS los formularios HIJOS (El que este activo) puedan cachar el evento Click de los botones Guardar, Eliminar, etc., etc.,

Alguien ha hecho algo similar o tiene alguna idea que me pudiese orientar?

De antemano se los agradezco.
bueno el principio es sencillo,
hace lo siguiente.

agrega un mdiform ("MDIForm1") con nombres por defecto
y agrega 3 forms hijos y le colocas a todos en en MDIChild = true

en cada formulario agregá un procedimiento que se llame guardar acá el código

Código:
Public Sub guardar()
MsgBox "guardado " & me.name
End Sub
depues agregas un menú y hace un menú luego en ese menú en el evento click colocá esto
Código:
For Each Form In Forms
    If Form.Visible = True Then
    
        If Form.Name <> "MDIForm1" Then 'omitimos el MDI padre y cualquier otro que no querrars validar
        Form.guardar
        End If
    End If
Next
perdón el ejemplo te lo hice en vb6 tratá de hacerlo con vb2005 y si me avisas
nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 27/08/2008, 10:46
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 21 años, 3 meses
Puntos: 53
Respuesta: MDI & Hijos.

la única diferencia sería en el mdiform en vb.net 2005
el evento guardar lo puse en resize

Código:
Option Strict Off
Option Explicit On
Friend Class MDIForm1
    Inherits System.Windows.Forms.Form
    
    Private Sub MDIForm1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        Form1.Show()
        Form2.Show()
    End Sub

    Private Sub MDIForm1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize

        Dim  Forma As Object
        For Each Forma In My.Application.OpenForms

            If Forma.Visible = True Then

                If Forma.Name <> "MDIForm1" Then

                    Forma.guardar()
                End If
            End If
        Next Forma
    End Sub
End Class
nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #4 (permalink)  
Antiguo 27/08/2008, 11:05
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 4 meses
Puntos: 8
Respuesta: MDI & Hijos.

Ya lo resolví aunque no como me hubiese gustado, lo que hice fue lo siguiente…..

En el evento Click del botón que esta en el toolStrip del MID

private void btnGuardar_Click(object sender, EventArgs e)
{
// Primero valido si hay algún formulario activo.
Form activeChild = ActiveMdiChild;
if (activeChild != null)
{
//Luego pregunto si es el formulario que necesito
if (activeChild.tag.ToString() == “NombreFormulario”)
{
//Despues Instancio el formulario activo
NombreFormulario fNF = NombreFormulario();

//En el formulario tengo un metodo publico GuardaInfo
fNF.GuardaInfo()
}

}
}


Y ya con eso lo resolví, yo quería hacerlo mas dinámico y sin tanto código…
Mi idea era manejar un EventHandler para el evento Click de los botones, luego en el formulario activo cachar ese evento y ahí manejar los eventos de los Click de la barra que esta en el MDI pero así como lo hice me funciona.

Si alguien tiene una mejor idea seria muy bueno contribuir ya que me imagino que es una de las maneras más comunes de trabajar con Menús y contenedores en Winform.

Estoy trabajando con VS 2005

Saludos cordiales,
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 03:40.