Postupy: Určení podřízeného prvku aktivní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. Pomocí události položky nabídky Kopírovat ve standardní nabídce Upravit byste vytvořili proceduru, která zkopíruje vybraný text do schránky Click .
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 ActiveMdiChild vlastnost, která vrátí podřízený formulář, který má fokus nebo 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í. ActiveMdiChild Podobně jako vlastnost vrátí tato vlastnost ActiveControl ovládací prvek s fokusem na aktivním podřízené 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í RichTextBox ovládací prvek. 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