Sdílet prostřednictvím


Postupy: Určení aktivního podřízeného mdi

V případě potřeby budete chtít zadat příkaz, který pracuje s ovládacím prvku, který se zaměřuje na aktuálně aktivní podřízený formulář. Předpokládejme například, že chcete zkopírovat vybraný text z textového pole podřízeného formuláře do schránky. Vytvoříte funkci, která zkopíruje vybraný text do schránky pomocí události Click položky nabídky Kopírovat ve standardní nabídce Upravit.

Vzhledem k tomu, že aplikace MDI může mít mnoho instancí stejného podřízeného formuláře, musí procedura vědět, který formulář použít. Chcete-li zadat správný formulář, použijte vlastnost ActiveMdiChild, která vrátí podřízený formulář, jenž je aktuálně aktivní nebo který byl naposledy aktivní.

Pokud máte ve formuláři několik ovládacích prvků, musíte také určit, který ovládací prvek je aktivní. Podobně jako vlastnost ActiveMdiChild, vlastnost ActiveControl vrátí ovládací prvek, který má fokus na aktivním podřízeném formuláři. Následující postup znázorňuje postup kopírování, který lze volat z podřízené nabídky formuláře, nabídky ve formuláři MDI nebo tlačítka panelu nástrojů.

Určení aktivní podřízené položky MDI (zkopírování textu do schránky)

  1. V rámci metody zkopírujte text aktivního ovládacího prvku aktivního podřízeného formuláře do schránky.

    Poznámka

    Tento příklad předpokládá, že existuje nadřazený formulář MDI (Form1), který obsahuje jedno nebo více podřízených oken MDI obsahující ovládací prvek RichTextBox. Další informace naleznete v tématu Vytváření nadřazených formulářů 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.");  
          }  
       }  
    }  
    

Viz také