Sdílet prostřednictvím


Návod: Přidání ovládacích prvků do dokumentu za běhu v doplňku VSTO

Ovládací prvky můžete přidat do libovolného otevřeného systém Microsoft Office wordového dokumentu pomocí doplňku VSTO. Tento názorný postup ukazuje, jak pomocí pásu karet umožnit uživatelům přidat Button dokument nebo RichTextContentControl do dokumentu.

Platí pro: Informace v tomto tématu platí pro projekty doplňků VSTO pro Word 2010. Další informace najdete v tématu Dostupné funkce podle aplikace Office a typu projektu.

Tento návod znázorňuje následující úlohy:

  • Vytvoření nového projektu doplňku Word VSTO

  • Poskytnutí uživatelského rozhraní pro přidání ovládacích prvků do dokumentu

  • Přidání ovládacích prvků do dokumentu za běhu

  • Odebrání ovládacích prvků z dokumentu

    Poznámka:

    Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Požadavky

K dokončení tohoto návodu budete potřebovat následující komponenty:

Vytvoření nového projektu doplňku aplikace Word

Začněte vytvořením projektu doplňku Word VSTO.

Vytvoření nového projektu doplňku Word VSTO

  1. Vytvořte projekt doplňku VSTO pro Word s názvem WordDynamicControls. Další informace naleznete v tématu Postupy: Vytváření projektů Office v sadě Visual Studio.

  2. Přidejte odkaz na sestavení Microsoft.Office.Tools.Word.v4.0.Utilities.dll . Tento odkaz se vyžaduje k programovému přidání ovládacího prvku model Windows Forms do dokumentu dále v tomto návodu.

Poskytnutí uživatelského rozhraní pro přidání ovládacích prvků do dokumentu

Přidání vlastní karty na pás karet ve Wordu Uživatelé mohou zaškrtnout políčka na kartě a přidat ovládací prvky do dokumentu.

Zadání uživatelského rozhraní pro přidání ovládacích prvků do dokumentu

  1. V nabídce Projekt klepněte na tlačítko Přidat novou položku.

  2. V dialogovém okně Přidat novou položku vyberte pás karet (Vizuální návrhář).

  3. Změňte název nového pásu karet na MyRibbon a klikněte na Přidat.

    Soubor MyRibbon.cs nebo MyRibbon.vb se otevře v Návrháři pásu karet a zobrazí výchozí kartu a skupinu.

  4. V Návrháři pásu karet klikněte na skupinu group1 .

  5. V okně Vlastnosti změňte vlastnost Popisek pro group1 na Přidat ovládací prvky.

  6. Na kartě Ovládací prvky pásu karet Office na panelu nástrojů přetáhněte ovládací prvek CheckBox na skupinu 1.

  7. Kliknutím na CheckBox1 ho vyberte.

  8. V okně Vlastnosti změňte následující vlastnosti.

    Vlastnost Hodnota
    Název addButtonCheckBox
    Popisek Tlačítko Přidat
  9. Přidejte druhé zaškrtávací políčko do skupiny 1 a změňte následující vlastnosti.

    Vlastnost Hodnota
    Název addRichTextCheckBox
    Popisek Přidání ovládacího prvku RTF
  10. V Návrháři pásu karet poklikejte na tlačítko Přidat.

    Obslužná rutina Click události zaškrtávacího políčka Přidat tlačítko se otevře v Editoru kódu.

  11. Vraťte se do Návrháře pásu karet a poklikejte na Přidat ovládací prvek RTF.

    Obslužná rutina Clickudálosti ovládacího prvku RtF se otevře v Editoru kódu.

    Později v tomto názorném postupu přidáte do těchto obslužných rutin událostí kód pro přidání a odebrání ovládacích prvků v aktivním dokumentu.

Přidání a odebrání ovládacích prvků v aktivním dokumentu

V kódu doplňku VSTO musíte před přidáním ovládacího prvku převést aktivní dokument na Documentpoložku hostitele. V řešeních Office se spravované ovládací prvky dají přidat jenom do hostitelských položek, které fungují jako kontejnery pro ovládací prvky. V projektech doplňků VSTO je možné vytvářet položky hostitele za běhu pomocí GetVstoObject metody.

Přidejte metody do ThisAddIn třídy, kterou lze volat pro přidání nebo odebrání Button aktivního dokumentu nebo RichTextContentControl do aktivního dokumentu. Později v tomto názorném postupu budete tyto metody volat z Click obslužných rutin událostí zaškrtávacích políček na pásu karet.

Přidání a odebrání ovládacích prvků v aktivním dokumentu

  1. V Průzkumník řešení poklikáním na ThisAddIn.cs nebo ThisAddIn.vb otevřete soubor v Editoru kódu.

  2. Do třídy ThisAddIn přidejte následující kód. Tento kód deklaruje Button a RichTextContentControl objekty představující ovládací prvky, které budou přidány do dokumentu.

    private Microsoft.Office.Tools.Word.Controls.Button button = null;
    private RichTextContentControl richTextControl = null;
    
  3. Do třídy přidejte následující metodu ThisAddIn . Když uživatel klikne na zaškrtávací políčko Přidat tlačítko na pásu karet, tato metoda přidá Button do aktuálního výběru dokumentu, pokud je zaškrtnuté políčko, nebo odebere Button , pokud je políčko nezaškrtnuto.

    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);
        }
    }
    
  4. Do třídy přidejte následující metodu ThisAddIn . Když uživatel klikne na zaškrtávací políčko Přidat ovládací prvek RTF na pásu karet, tato metoda přidá RichTextContentControl do aktuálního výběru dokumentu, pokud je zaškrtnuté políčko nebo odebere RichTextContentControl , pokud je políčko nezaškrtnuto.

    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í ovládacího prvku Tlačítko při uložení dokumentu

model Windows Forms ovládací prvky se při uložení a zavření dokumentu neuchovávají. Obálka technologie ActiveX pro každý ovládací prvek však zůstane v dokumentu a ohraničení tohoto obálky můžou koncoví uživatelé vidět při opětovném otevření dokumentu. Dynamicky vytvořené ovládací prvky model Windows Forms v doplňkech VSTO můžete vyčistit několika způsoby. V tomto názorném postupu programově odeberete Button ovládací prvek při uložení dokumentu.

Odebrání ovládacího prvku Tlačítko při uložení dokumentu

  1. Do souboru kódu ThisAddIn.cs nebo ThisAddIn.vb přidejte do třídy následující metoduThisAddIn. Tato metoda je obslužná rutina události události DocumentBeforeSave . Pokud má uložený dokument přidruženou Document položku hostitele, obslužná rutina události získá položku hostitele a odebere Button ovládací prvek, pokud existuje.

    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;
            }
        }
    }
    
  2. V jazyce C# přidejte do ThisAddIn_Startup obslužné rutiny události následující kód. Tento kód je vyžadován v jazyce C# pro připojení Application_DocumentBeforeSave obslužné rutiny DocumentBeforeSave události k události.

    this.Application.DocumentBeforeSave += 
        new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
        Application_DocumentBeforeSave);
    

Přidání a odebrání ovládacích prvků, když uživatel klikne na zaškrtávací políčka na pásu karet

Nakonec upravte Click obslužné rutiny událostí políček, které jste přidali na pás karet, a přidejte nebo odeberte ovládací prvky v dokumentu.

Přidání nebo odebrání ovládacích prvků, když uživatel klikne na zaškrtávací políčka na pásu karet

  1. V souboru kódu MyRibbon.cs nebo MyRibbon.vb nahraďte vygenerované obslužné addButtonCheckBox_Click rutiny událostí addRichTextCheckBox_Click následujícím kódem. Tento kód předefinuje tyto obslužné rutiny událostí, aby volal ToggleButtonOnDocument metody, ToggleRichTextControlOnDocument které jste přidali do ThisAddIn třídy dříve v tomto návodu.

    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 do dokumentu tak, že je vyberete z vlastní karty na pásu karet. Když dokument uložíte, Button ovládací prvek se odebere.

K otestování řešení.

  1. Stisknutím klávesy F5 spusťte projekt.

  2. V aktivním dokumentu stiskněte několikrát klávesu Enter a přidejte do dokumentu nové prázdné odstavce.

  3. Vyberte první odstavec.

  4. Klikněte na kartu Doplňky .

  5. Ve skupině Přidat ovládací prvky klikněte na tlačítko Přidat.

    V prvním odstavci se zobrazí tlačítko.

  6. Vyberte poslední odstavec.

  7. Ve skupině Přidat ovládací prvky klepněte na tlačítko Přidat ovládací prvek RTF.

    Do posledního odstavce se přidá ovládací prvek obsahu ve formátu RTF.

  8. Uložte dokument.

    Tlačítko se odebere z dokumentu.

Další kroky

Další informace o ovládacích prvcích v doplňkech VSTO najdete v těchto tématech: