Comment : déterminer l'enfant MDI actif

À l’occasion, vous souhaiterez fournir une commande qui fonctionne sur le contrôle qui a le focus sur le formulaire enfant actif. Par exemple, supposons que vous souhaitez copier le texte sélectionné de la zone de texte du formulaire enfant dans le Presse-papiers. Vous créez une procédure qui copie le texte sélectionné dans le Presse-papiers à l’aide de l’événement Click de l’élément de menu Copier dans le menu Édition standard.

Étant donné qu’une application MDI peut avoir de nombreuses instances du même formulaire enfant, la procédure doit savoir quel formulaire utiliser. Pour spécifier le formulaire approprié, utilisez la ActiveMdiChild propriété, qui retourne le formulaire enfant qui a le focus ou qui a été le plus récemment actif.

Lorsque vous avez plusieurs contrôles sur un formulaire, vous devez également spécifier le contrôle actif. Comme la ActiveMdiChild propriété, la ActiveControl propriété retourne le contrôle avec le focus sur le formulaire enfant actif. La procédure ci-dessous illustre une procédure de copie qui peut être appelée à partir d’un menu de formulaire enfant, d’un menu du formulaire MDI ou d’un bouton de barre d’outils.

Pour déterminer l’enfant MDI actif (pour copier son texte dans le Presse-papiers)

  1. Dans une méthode, copiez le texte du contrôle actif du formulaire enfant actif dans le Presse-papiers.

    Remarque

    Cet exemple suppose qu’il existe un formulaire parent MDI (Form1) qui a une ou plusieurs fenêtres enfants MDI contenant un RichTextBox contrôle. Pour plus d’informations, consultez Création de formulaires parents MDI.

    Public Sub mniCopy_Click(ByVal sender As Object, _  
       ByVal e As System.EventArgs) Handles mniCopy.Click  
    
       ' Determine the active child form.  
       Dim activeChild As Form = Me.ActiveMDIChild  
    
       ' If there is an active child form, find the active control, which  
       ' in this example should be a RichTextBox.  
       If (Not activeChild Is Nothing) Then  
          Dim theBox As RichTextBox = _  
            TryCast(activeChild.ActiveControl, RichTextBox)  
    
          If (Not theBox Is Nothing) Then  
             'Put selected text on Clipboard.  
             Clipboard.SetDataObject(theBox.SelectedText)  
          Else  
             MessageBox.Show("You need to select a RichTextBox.")  
          End If  
       End If  
    End Sub  
    
    protected void mniCopy_Click (object sender, System.EventArgs e)  
    {  
       // Determine the active child form.  
       Form activeChild = this.ActiveMdiChild;  
    
       // If there is an active child form, find the active control, which  
       // in this example should be a RichTextBox.  
       if (activeChild != null)  
       {
          try  
          {  
             RichTextBox theBox = (RichTextBox)activeChild.ActiveControl;  
             if (theBox != null)  
             {  
                // Put the selected text on the Clipboard.  
                Clipboard.SetDataObject(theBox.SelectedText);  
    
             }  
          }  
          catch  
          {  
             MessageBox.Show("You need to select a RichTextBox.");  
          }  
       }  
    }  
    

Voir aussi