Udostępnij za pośrednictwem


Przewodnik: dodawanie kontrolek do dokumentu w czasie wykonywania w dodatku VSTO

Kontrolki można dodawać do dowolnego otwartego dokumentu programu Microsoft Office Word przy użyciu dodatku VSTO. W tym przewodniku pokazano, jak używać wstążki, aby umożliwić użytkownikom dodawanie Button elementu lub do RichTextContentControl dokumentu.

Dotyczy: informacje w tym temacie dotyczą projektów dodatków VSTO dla programu Word 2010. Aby uzyskać więcej informacji, zobacz Dostępne funkcje uporządkowane według aplikacji pakietu Office i typu projektu.

W instruktażu przedstawiono następujące zagadnienia:

  • Tworzenie nowego projektu dodatku programu Word VSTO.

  • Udostępnianie interfejsu użytkownika w celu dodania kontrolek do dokumentu.

  • Dodawanie kontrolek do dokumentu w czasie wykonywania.

  • Usuwanie kontrolek z dokumentu.

    Uwaga

    Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

Tworzenie nowego projektu dodatku programu Word

Zacznij od utworzenia projektu dodatku programu Word VSTO.

Aby utworzyć nowy projekt dodatku programu Word VSTO

  1. Utwórz projekt dodatku VSTO dla programu Word o nazwie WordDynamicControls. Aby uzyskać więcej informacji, zobacz How to: Create Office projects in Visual Studio (Jak tworzyć projekty pakietu Office w programie Visual Studio).

  2. Dodaj odwołanie do zestawu Microsoft.Office.Tools.Word.v4.0.Utilities.dll . To odwołanie jest wymagane do programowego dodania kontrolki Windows Forms do dokumentu w dalszej części tego przewodnika.

Udostępnianie interfejsu użytkownika do dodawania kontrolek do dokumentu

Dodaj kartę niestandardową do wstążki w programie Word. Użytkownicy mogą zaznaczać pola wyboru na karcie, aby dodać kontrolki do dokumentu.

Aby udostępnić interfejs użytkownika do dodawania kontrolek do dokumentu

  1. W menu Project (Projekt) kliknij pozycję Add New Item (Dodaj nowy element).

  2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Wstążka (Visual Projektant).

  3. Zmień nazwę nowej wstążki na MyRibbon, a następnie kliknij przycisk Dodaj.

    Plik MyRibbon.cs lub MyRibbon.vb zostanie otwarty w Projektant wstążki i wyświetli domyślną kartę i grupę.

  4. W Projektant wstążki kliknij grupę group1.

  5. W oknie Właściwości zmień właściwość Label dla grupy group1 na Dodaj kontrolki.

  6. Na karcie Kontrolki wstążki pakietu Office przybornika przeciągnij kontrolkę CheckBox do grupy group1.

  7. Kliknij pozycję CheckBox1 , aby ją zaznaczyć.

  8. W oknie Właściwości zmień następujące właściwości.

    Właściwości Wartość
    Nazwa/nazwisko addButtonCheckBox
    Etykieta Dodaj przycisk
  9. Dodaj drugie pole wyboru do grupy group1, a następnie zmień następujące właściwości.

    Właściwości Wartość
    Nazwa/nazwisko addRichTextCheckBox
    Etykieta Dodawanie kontrolki tekstu sformatowanych
  10. Na Projektant wstążki kliknij dwukrotnie przycisk Dodaj.

    Procedura Click obsługi zdarzeń pola wyboru Dodaj przycisk zostanie otwarta w Edytorze kodu.

  11. Wróć do Projektant wstążki, a następnie kliknij dwukrotnie pozycję Dodaj kontrolkę tekstu sformatowanego.

    Procedura Click obsługi zdarzeń pola wyboru Dodaj kontrolkę tekstu sformatowanego zostanie otwarta w Edytorze kodu.

    W dalszej części tego przewodnika dodasz kod do tych programów obsługi zdarzeń, aby dodać i usunąć kontrolki w aktywnym dokumencie.

Dodawanie i usuwanie kontrolek w aktywnym dokumencie

W kodzie dodatku VSTO należy przekonwertować aktywny dokument na Documentelement hosta, zanim będzie można dodać kontrolkę. W rozwiązaniach pakietu Office kontrolki zarządzane można dodawać tylko do elementów hosta, które działają jako kontenery dla kontrolek. W projektach dodatków VSTO elementy hosta można tworzyć w czasie wykonywania przy użyciu GetVstoObject metody .

Dodaj metody do ThisAddIn klasy, którą można wywołać, aby dodać lub usunąć Button element lub RichTextContentControl w aktywnym dokumencie. W dalszej części tego przewodnika wywołasz te metody z Click procedur obsługi zdarzeń pól wyboru na wstążce.

Aby dodać i usunąć kontrolki w aktywnym dokumencie

  1. W Eksplorator rozwiązań kliknij dwukrotnie plik ThisAddIn.cs lub ThisAddIn.vb, aby otworzyć plik w Edytorze kodu.

  2. Dodaj poniższy kod do klasy ThisAddIn. Ten kod deklaruje Button i RichTextContentControl obiekty reprezentujące kontrolki, które zostaną dodane do dokumentu.

    private Microsoft.Office.Tools.Word.Controls.Button button = null;
    private RichTextContentControl richTextControl = null;
    
  3. Dodaj następującą metodę do ThisAddIn klasy . Gdy użytkownik kliknie pole wyboru Dodaj przycisk na wstążce, ta metoda dodaje Button element do bieżącego zaznaczenia dokumentu, jeśli pole wyboru jest zaznaczone, lub usuwa pole wyboru, jeśli pole wyboru zostało wyczyszczone Button .

    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. Dodaj następującą metodę do ThisAddIn klasy . Gdy użytkownik kliknie pole wyboru Dodaj kontrolkę tekstu sformatowanego na wstążce, ta metoda dodaje RichTextContentControl element do bieżącego zaznaczenia dokumentu, jeśli pole wyboru jest zaznaczone, lub usuwa pole wyboru, jeśli pole wyboru jest wyczyszczoneRichTextContentControl.

    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);
        }
    }
    

Usuń kontrolkę Przycisk po zapisaniu dokumentu

Kontrolki formularzy systemu Windows nie są utrwalane podczas zapisywania dokumentu, a następnie zamykane. Jednak otoka ActiveX dla każdej kontrolki pozostaje w dokumencie, a obramowanie tej otoki może być widoczne dla użytkowników końcowych po ponownym otwarciu dokumentu. Istnieje kilka sposobów czyszczenia dynamicznie utworzonych kontrolek formularzy systemu Windows w dodatku VSTO. W tym przewodniku programowo usuniesz kontrolkę Button po zapisaniu dokumentu.

Aby usunąć kontrolkę Przycisk po zapisaniu dokumentu

  1. W pliku kodu ThisAddIn.cs lub ThisAddIn.vb dodaj następującą ThisAddIn metodę do klasy. Ta metoda jest procedurą obsługi zdarzeń dla DocumentBeforeSave zdarzenia. Jeśli zapisany dokument zawiera Document skojarzony z nim element hosta, program obsługi zdarzeń pobiera element hosta i usuwa kontrolkę Button , jeśli istnieje.

    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. W języku C# dodaj następujący kod do programu obsługi zdarzeń ThisAddIn_Startup . Ten kod jest wymagany w języku C# w celu połączenia Application_DocumentBeforeSave programu obsługi zdarzeń ze zdarzeniem DocumentBeforeSave .

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

Dodawanie i usuwanie kontrolek po kliknięciu pól wyboru na wstążce przez użytkownika

Na koniec zmodyfikuj Click programy obsługi zdarzeń pól wyboru dodanych do wstążki, aby dodać lub usunąć kontrolki w dokumencie.

Aby dodać lub usunąć kontrolki, gdy użytkownik kliknie pola wyboru na wstążce

  1. W pliku kodu MyRibbon.cs lub MyRibbon.vb zastąp wygenerowane addButtonCheckBox_Click i addRichTextCheckBox_Click programy obsługi zdarzeń następującym kodem. Ten kod ponownie definiuje te programy obsługi zdarzeń w celu wywołania ToggleButtonOnDocument metod i ToggleRichTextControlOnDocument dodanych do ThisAddIn klasy wcześniej w tym przewodniku.

    private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleButtonOnDocument();
    }
    
    private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleRichTextControlOnDocument();
    }
    

Testowanie rozwiązania

Dodaj kontrolki do dokumentu, wybierając je z karty niestandardowej na wstążce. Po zapisaniu dokumentu kontrolka zostanie usunięta Button .

Aby przetestować rozwiązanie.

  1. Naciśnij klawisz F5 , aby uruchomić projekt.

  2. W aktywnym dokumencie naciśnij klawisz Enter kilka razy, aby dodać nowe puste akapity do dokumentu.

  3. Wybierz pierwszy akapit.

  4. Kliknij kartę Dodatki .

  5. W grupie Dodawanie kontrolek kliknij przycisk Dodaj.

    Przycisk zostanie wyświetlony w pierwszym akapicie.

  6. Wybierz ostatni akapit.

  7. W grupie Dodawanie kontrolek kliknij pozycję Dodaj kontrolkę tekstu sformatowago.

    Kontrolka zawartości tekstu sformatowanego jest dodawana do ostatniego akapitu.

  8. Zapisz dokument.

    Przycisk zostanie usunięty z dokumentu.

Następne kroki

Więcej informacji na temat kontrolek w dodatku VSTO można znaleźć w następujących tematach: