Guide pratique pour déterminer l’enfant MDI actif
À l'occasion, vous souhaiterez donner une commande qui fonctionne sur le contrôle ayant le focus sur le formulaire enfant actuellement 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 propriété ActiveMdiChild, 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 propriété ActiveMdiChild, la propriété ActiveControl 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)
Dans une méthode, copiez le texte du contrôle actif du formulaire enfant actif dans le Presse-papiers.
Note
Cet exemple suppose qu’il existe un formulaire parent MDI (
Form1
) qui a une ou plusieurs fenêtres enfants MDI contenant un contrôle RichTextBox. 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
.NET Desktop feedback