2010-10-10 6 views
0

Nous développons une application MDI. Ce que nous devons faire, c'est que j'ai 4 formulaires enfants et 1 formulaire parent. sur le formulaire ToolBox du formulaire parent, j'ai 3 boutons. Ajouter, Enregistrer, Annuler.Application MDI Menu principal aide

Ce que je veux faire est ce que la forme enfant a chargée. Lorsque ces boutons sont cliqués, ils doivent traiter l'action sur le formulaire enfant. Par exemple, si mon formulaire enfant nommé CustomerManager est ouvert, alors en appuyant sur le bouton ajouter, il devrait traiter mon formulaire enfant CustomerManager. Évidemment, je vais redresser la logique contre chaque bouton d'action de forme.

J'espère pouvoir définir ce que je cherche.

Cordialement Shax

Répondre

0

Il est préférable de faire en déclarant une interface:

public interface IChildCommands { 
    void Add(); 
    void Save(); 
    void Cancel(); 
} 

Et laissez votre formulaire enfant MDI mettre en œuvre:

public partial class Form2 : Form, IChildCommands { 
    // Right-click IChildCommands in the editor and choose Implement Interface 
    //... 
} 

Dans votre parent, mettre en œuvre Click événement pour le bouton de la barre d'outils comme ceci:

private void AddButton_Click(object sender, EventArgs e) { 
     var child = this.ActiveMdiChild as IChildCommands; 
     if (child != null) child.Add(); 
    } 

C'est également une bonne idée de désactiver le bouton si un enfant actif n'implémente pas la commande. Que vous pouvez faire en écrivant un gestionnaire d'événement pour l'événement Application.Idle:

void Application_Idle(object sender, EventArgs e) { 
     AddButton.Enabled = this.ActiveMdiChild is IChildCommands; 
     // etc.. 
    } 
+0

Merci Hans, je ferai selon votre suggestion et vous mettra à jour si le problème trouvé .... – Shax

Questions connexes