Návod: Přidání ovládacích prvků do dokumentu za běhu v doplňku na úrovni aplikace
Pomocí doplňku pro úroveň aplikace můžete přidat ovládací prvky libovolného otevřeného dokumentu Microsoft Office Word.Tento návod ukazuje, jak povolit uživatelům přidávat pomocí pásu karet Button nebo RichTextContentControl do dokumentu.
Platí pro: informace v tomto tématu se vztahují na projekty na úrovni aplikace Word 2010.Další informace naleznete v tématu Dostupné funkce podle aplikací systému Office a typů projektu.
Tento návod ilustruje následující úkoly:
Vytvoření nové aplikace Word přidat do projektu.
Poskytuje uživatelské rozhraní (UI) přidat ovládací prvky v dokumentu.
Přidání ovládacích prvků v dokumentu v době běhu.
Odebrání ovládacích prvků z dokumentu.
[!POZNÁMKA]
Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.
Požadavky
Chcete-li dokončit tento návod, potřebujete následující komponenty:
Edice Visual Studia 2013, která zahrnuje nástroje Microsoft Office Developer Tools. Další informace najdete v tématu Konfigurace počítače pro vývoj řešení pro systém Office.
Word 2013 nebo Word 2010.
Vytvoření nové aplikace Word přidat v projektu
Začněte vytvořením projektu přidat v aplikaci Word.
Vytvoření nové slovo přidat do projektu
Vytvoření projektu v úroveň aplikace Word s názvem WordDynamicControls.Další informace naleznete v tématu Postupy: Vytváření projektů pro systém Office v prostředí Visual Studio.
Přidat odkaz Microsoft.Office.Tools.Word.v4.0.Utilities.dll sestavení.Tento odkaz vyžaduje programově přidat ovládací prvek model Windows Forms dokument dále v tomto návodu.
Poskytování uživatelského rozhraní přidat ovládací prvky do dokumentu
Přidáte vlastní kartu pásu karet v aplikaci Word.Uživatelé mohou vybrat zaškrtávací políčka na kartě dokumentu přidat ovládací prvky.
Uživatelské rozhraní přidat ovládací prvky do dokumentu
V nabídce Projekt klikněte na příkaz Přidat novou položku.
V Přidat novou položku dialogovém pásu karet (vizuální návrhář).
Změňte název nové pásu karet na MyRibbona na Přidat.
MyRibbon.cs nebo MyRibbon.vb soubor se otevře v Návrháři pásu karet a zobrazí výchozí kartu a skupiny.
V Návrháři pásu karet klepněte skupina1 skupiny.
V Vlastnosti okno Změnit štítek vlastnost pro skupina1 přidání ovládacích prvků.
Z Ovládací prvky pásu karet Office kartě nástrojů, přetáhněte CheckBox na ovládací prvek skupina1.
Klepněte na CheckBox1 jej vyberte.
V Vlastnosti okna, změnit následující vlastnosti.
Property
Value
Název
addButtonCheckBox
Popisek
Přidání tlačítka
Přidání druhého zaškrtávacího políčka na skupina1a potom změňte následující vlastnosti.
Property
Value
Název
addRichTextCheckBox
Popisek
Přidejte ovládací prvek RTF
V Návrháři pásu karet poklepejte na tlačítko Přidat.
Click Obslužné rutiny políčko Přidat tlačítko se otevře v editoru kódu.
Vrátit Návrhář pásu karet a poklepejte na ovládací prvek formátovaného textu.
Click Obslužné rutiny políčko ovládací prvek formátovaného textu se otevře v editoru kódu.
Dále v tomto návodu přidáte kód tyto obslužné rutiny událostí, přidávat a odebírat ovládací prvky na aktivním dokumentu.
Přidání a odebrání ovládacích prvků na aktivní dokument.
V kódu přidat, je nutné převést do aktivního dokumentu Documentpoložku hostitele před přidáním ovládacího prvku. V řešeních Office spravované ovládací prvky lze pouze do položek hostitele, které fungují jako kontejnery pro ovládací prvky.Na úrovni aplikace přidat v projektech může hostitel položky vytvořen za běhu pomocí GetVstoObject metoda.
Přidat metody ThisAddIn třídy, kterou lze volat pro přidání nebo odebrání Button nebo RichTextContentControl v aktivním dokumentu.Dále v tomto návodu budete volat tyto metody z Click obslužné rutiny políčka na pásu karet.
Přidávat a odebírat ovládací prvky na aktivním dokumentu.
V Průzkumníku, poklepejte na ThisAddIn.cs nebo ThisAddIn.vb k otevření souboru v editoru kódu.
Přidejte následující kód do třídy ThisAddIn.Tento kód deklaruje Button a RichTextContentControl objekty, které představují ovládací prvky, které budou přidány do dokumentu.
Private button As Microsoft.Office.Tools.Word.Controls.Button = Nothing Private richTextControl As RichTextContentControl = Nothing
private Microsoft.Office.Tools.Word.Controls.Button button = null; private RichTextContentControl richTextControl = null;
Přidejte následující metodu ThisAddIn třídy.Po klepnutí na tlačítko Přidat zaškrtávací políčko na pásu karet, tato metoda přidá Button na aktuální výběr v dokumentu, pokud je zaškrtnuto políčko nebo odebere Button Pokud je zrušeno zaškrtnutí políčka.
Friend Sub ToggleButtonOnDocument() Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) Dim name As String = "MyButton" If Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked Then Dim selection = Me.Application.Selection If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then button = vstoDocument.Controls.AddButton( _ selection.Range, 100, 30, name) End If Else vstoDocument.Controls.Remove(name) End If End Sub
internal void ToggleButtonOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyButton"; if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { button = vstoDocument.Controls.AddButton( selection.Range, 100, 30, name); } } else { vstoDocument.Controls.Remove(name); } }
Přidejte následující metodu ThisAddIn třídy.Když uživatel klepne na zaškrtávací políčko ovládací prvek formátovaného textu na pásu karet, tato metoda přidá RichTextContentControl na aktuální výběr v dokumentu, pokud je zaškrtnuto políčko nebo odebere RichTextContentControl Pokud je zrušeno zaškrtnutí políčka.
Friend Sub ToggleRichTextControlOnDocument() Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) Dim name As String = "MyRichTextBoxControl" If Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked Then Dim selection = Me.Application.Selection If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then richTextControl = vstoDocument.Controls.AddRichTextContentControl( _ selection.Range, name) End If Else vstoDocument.Controls.Remove(name) End If End Sub
internal void ToggleRichTextControlOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyRichTextBoxControl"; if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { richTextControl = vstoDocument.Controls.AddRichTextContentControl( selection.Range, name); } } else { vstoDocument.Controls.Remove(name); } }
Odebrání tlačítko ovládacího prvku při dokumentu uložena.
Ovládací prvky model Windows Forms nepřetrvají po uložení dokumentu a pak uzavřen.Však zůstane souhrnného seznamu stop ActiveX pro každý prvek v dokumentu a koncovým uživatelům může zobrazit ohraničení této obálky, při opětovném otevření dokumentu.Vyčistit dynamicky vytvářených ovládacích prvků model Windows Forms doplňky několika způsoby.V tomto návodu je programově odebrat Button řízení, při uložení dokumentu.
Při uložení dokumentu odebrat ovládací tlačítka
V souboru ThisAddIn.cs nebo ThisAddIn.vb kódu přidejte následující metodu k ThisAddIn třídy.Tato metoda obslužné rutiny události je DocumentBeforeSave události.Pokud má dokument uložený Document získá položku hostitele hostitel zboží spojené s jeho obslužnou rutinu události a odebere Button ovládacího prvku, pokud existuje.
Private Sub Application_DocumentBeforeSave(ByVal Doc As Word.Document, _ ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave Dim isExtended As Boolean = Globals.Factory.HasVstoObject(Doc) If isExtended Then Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Doc) If vstoDocument.Controls.Contains(button) Then vstoDocument.Controls.Remove(button) Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = False End If End If End Sub
private void Application_DocumentBeforeSave(Word.Document Doc, ref bool SaveAsUI, ref bool Cancel) { bool isExtended = Globals.Factory.HasVstoObject(Doc); if (isExtended) { Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc); if (vstoDocument.Controls.Contains(button)) { vstoDocument.Controls.Remove(button); Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false; } } }
V jazyce C# přidejte následující kód ThisAddIn_Startup obslužné rutiny události.Tento kód v jazyce C# připojení vyžaduje Application_DocumentBeforeSave obslužnou rutinu události DocumentBeforeSave události.
this.Application.DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler( Application_DocumentBeforeSave);
Přidání a odebrání ovládacích prvků, když uživatel klepne na zaškrtávací políčka na pásu karet
Nakonec změnit Click obslužné rutiny políčka přidán pásu přidat nebo odebrat ovládací prvky v dokumentu.
Přidat nebo odebrat prvky, když uživatel klepne na zaškrtávací políčka na pásu karet
Nahradit, generované v kódu souboru MyRibbon.cs nebo MyRibbon.vb addButtonCheckBox_Click a addRichTextCheckBox_Click obslužné rutiny událostí pomocí následujícího kódu.Tento kód předefinuje tyto obslužné rutiny událostí pro volání ToggleButtonOnDocument a ToggleRichTextControlOnDocument metod, které jste přidali ThisAddIn třída dříve v tomto návodu.
Private Sub addButtonCheckBox_Click(ByVal sender As System.Object, _ ByVal e As RibbonControlEventArgs) Handles addButtonCheckBox.Click Globals.ThisAddIn.ToggleButtonOnDocument() End Sub Private Sub addRichTextCheckBox_Click(ByVal sender As System.Object, _ ByVal e As RibbonControlEventArgs) Handles addRichTextCheckBox.Click Globals.ThisAddIn.ToggleRichTextControlOnDocument() End Sub
private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e) { Globals.ThisAddIn.ToggleButtonOnDocument(); } private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e) { Globals.ThisAddIn.ToggleRichTextControlOnDocument(); }
Testování řešení
Přidejte ovládací prvky dokumentu výběrem z vlastní kartu na pásu karet.Při uložení dokumentu, Button odebrání ovládacího prvku.
Test řešení.
Stisknutím klávesy F5 spustit projektu.
V aktivním dokumentu opakovaným stisknutím klávesy ENTER přidejte nové prázdné odstavce v dokumentu.
Vyberte první odstavec.
Klepněte Doplňky kartu.
V Přidat ovládací prvky skupinu, klepněte na Tlačítko Přidat.
Tlačítko se zobrazí v prvním odstavci.
Vyberte poslední odstavec.
V Přidat ovládací prvky skupinu, klepněte na Ovládací prvek formátovaného textu.
Ovládací prvek obsahu pro text ve formátu RTF je přidán na poslední odstavec.
Uložte dokument.
Tlačítko je odebrán z dokumentu.
Další kroky
Další informace o ovládacích prvcích v úrovni aplikace doplňky z těchto témat:
Příklad, který ukazuje, jak přidat mnoho typů ovládacích prvků do dokumentu za běhu a znovu vytvořit ovládací prvky, když znovu otevřete dokument, viz Word doplněk dynamické ovládací prvky vzorku v Ukázky a návody k vývoji pro systém Office.
Návod, který ukazuje, jak přidat ovládací prvky do listu pomocí doplněk aplikační úrovni pro aplikaci Excel, viz Návod: Přidání ovládacích prvků na list za běhu v projektu na úrovni aplikace.
Viz také
Úkoly
Postupy: Přidání ovládacích prvků Windows Forms do dokumentů Office
Postupy: Přidání ovládacích prvků obsahu do dokumentů aplikace Word
Koncepty
Přidání ovládacích prvků do dokumentů Office za běhu
Uchování dynamických ovládacích prvků v dokumentech systému Office
Rozšíření dokumentů aplikace Word a sešitů aplikace Excel v doplňcích na úrovni aplikace za běhu