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)
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é
.NET Desktop feedback