Kontrolki zawartości

Kontrolki zawartości umożliwiają projektowanie dokumentów i szablonów, które mają następujące funkcje:

Informacje o kontrolkach zawartości

Kontrolki zawartości udostępniają interfejs użytkownika zoptymalizowany pod kątem danych wejściowych użytkownika i drukowania. Po dodaniu kontrolki zawartości do dokumentu kontrolka jest identyfikowana przez obramowanie, tytuł i tekst tymczasowy, który może dostarczyć instrukcje dla użytkownika. Obramowanie i tytuł kontrolki nie są wyświetlane w drukowanych wersjach dokumentu.

Jeśli na przykład chcesz, aby użytkownik mógł wprowadzić datę w sekcji dokumentu, możesz dodać kontrolkę zawartości selektora dat do dokumentu. Gdy użytkownicy klikną kontrolkę, zostanie wyświetlony standardowy interfejs użytkownika selektora dat. Można również ustawić właściwości kontrolki, aby ustawić wyświetlany kalendarz regionalny i określić format daty. Gdy użytkownik wybierze datę, interfejs użytkownika kontrolki jest ukryty, a data jest wyświetlana tylko wtedy, gdy użytkownik wyświetli dokument.

Kontrolki zawartości ułatwiają również wykonywanie następujących czynności:

  • Uniemożliwianie użytkownikom edytowania lub usuwania części dokumentu. Jest to przydatne, jeśli masz informacje w dokumencie lub szablonie, które użytkownicy powinni być w stanie odczytać, ale nie edytować, lub jeśli chcesz, aby użytkownicy mogli edytować kontrolki zawartości, ale nie usuwać ich.

  • Wiązanie części dokumentu lub szablonu z danymi. Kontrolki zawartości można powiązać z polami bazy danych, obiektami zarządzanymi w programie .NET Framework, elementami XML przechowywanymi w dokumencie i innymi źródłami danych.

    W projektach na poziomie dokumentu możesz dodawać kontrolki zawartości do dokumentu w czasie projektowania lub w czasie wykonywania. W projektach dodatków VSTO można dodawać kontrolki zawartości do dowolnego otwartego dokumentu w czasie wykonywania. Aby uzyskać więcej informacji, zobacz How to: Add content controls to Word documents (Instrukcje: dodawanie kontrolek zawartości do dokumentów programu Word).

Uwaga

Kontrolki zawartości można używać tylko w dokumentach zapisanych w formacie Open XML. Nie można używać kontrolek zawartości w dokumentach zapisanych w formacie dokumentu programu Word 97-2003 (doc).

Typy kontrolek zawartości

Istnieją dziewięć różnych typów kontrolek zawartości, które można dodać do dokumentów. Większość kontrolek zawartości ma odpowiedni typ w Microsoft.Office.Tools.Word przestrzeni nazw. Można również użyć ogólnego ContentControlelementu , który może reprezentować dowolną z dostępnych kontrolek zawartości. Aby zapoznać się z przewodnikiem, który pokazuje, jak używać każdej z dostępnych kontrolek zawartości, zobacz Przewodnik: tworzenie szablonu przy użyciu kontrolek zawartości.

Galeria bloków konstrukcyjnych umożliwia użytkownikom wybór z listy bloków konstrukcyjnych dokumentu do wstawiania do dokumentu. Blok konstrukcyjny dokumentu to część zawartości, która została utworzona wielokrotnie, na przykład wspólna strona tytułowa, sformatowana tabela lub nagłówek. Aby uzyskać więcej informacji, zobacz BuildingBlockGalleryContentControl typ. Aby uzyskać więcej informacji na temat bloków konstrukcyjnych, zobacz Co nowego dla deweloperów w programie Word 2007.

Pole wyboru

Pole wyboru zawiera interfejs użytkownika reprezentujący stan binarny: zaznaczony lub wyczyszczone.

W przeciwieństwie do innych typów kontrolek zawartości środowisko uruchomieniowe Visual Studio Tools dla pakietu Office nie udostępnia określonego typu, który reprezentuje kontrolkę zawartości pola wyboru. Innymi słowy, nie CheckBoxContentControl ma typu. Można jednak nadal utworzyć kontrolkę zawartości pola wyboru, dodając ogólny ContentControl do dokumentu programowo. Aby uzyskać więcej informacji, zobacz Kontrolki zawartości pola wyboru w projektach programu Word.

Pole kombi

W polu kombi zostanie wyświetlona lista elementów, które użytkownicy mogą wybrać. W przeciwieństwie do listy rozwijanej pole kombi umożliwia użytkownikom dodawanie własnych elementów. Aby uzyskać więcej informacji, zobacz ComboBoxContentControl typ.

Selektor daty

Selektor dat udostępnia interfejs użytkownika kalendarza do wybierania daty. Kalendarz jest wyświetlany, gdy użytkownik końcowy kliknie strzałkę listy rozwijanej w kontrolce. Możesz użyć regionalnych kalendarzy i różnych formatów dat. Aby uzyskać więcej informacji, zobacz DatePickerContentControl typ.

Lista rozwijana zawiera listę elementów, które użytkownicy mogą wybrać. W przeciwieństwie do pola kombi lista rozwijana nie pozwala użytkownikom dodawać ani edytować elementów. Aby uzyskać więcej informacji, zobacz DropDownListContentControl typ.

Grupuj

Kontrolka grupy definiuje chroniony region dokumentu, którego użytkownicy nie mogą edytować ani usuwać. Kontrolka grupy może zawierać dowolne elementy dokumentu, takie jak tekst, tabele, grafika i inne kontrolki zawartości. Aby uzyskać więcej informacji, zobacz GroupContentControl typ.

Obraz

Kontrolka obrazu wyświetla obraz. Obraz można określić w czasie projektowania lub czasie wykonywania albo kliknąć tę kontrolkę, aby wybrać obraz do wstawienia do dokumentu. Aby uzyskać więcej informacji, zobacz PictureContentControl typ.

Tekst sformatowany

Kontrolka tekstu sformatowanego zawiera tekst lub inne elementy, takie jak tabele, obrazy lub inne kontrolki zawartości. Aby uzyskać więcej informacji, zobacz RichTextContentControl typ.

Zwykły tekst

Kontrolka zwykłego tekstu zawiera tekst. Kontrolka zwykłego tekstu nie może zawierać innych elementów, takich jak tabele, obrazy lub inne kontrolki zawartości. Ponadto cały tekst w kontrolce zwykłego tekstu ma to samo formatowanie. Na przykład jeśli italizuj jedno słowo zdania, które znajduje się w kontrolce zwykłego tekstu, cały tekst wewnątrz kontrolki jest kursywą. Aby uzyskać więcej informacji, zobacz PlainTextContentControl typ.

Ogólna kontrolka zawartości

Ogólna kontrolka zawartości to ContentControl obiekt, który może reprezentować dowolny z dostępnych typów kontrolek zawartości. Obiekt można zmienić ContentControl tak, aby zachowywał się jak inny typ kontrolki zawartości przy użyciu Type właściwości . Jeśli na przykład utworzysz obiekt reprezentujący kontrolkę ContentControl zwykłego tekstu, możesz zmienić go w czasie wykonywania, tak aby zachowywał się jak pole kombi.

Obiekty można tworzyć ContentControl tylko w czasie wykonywania, a nie w czasie projektowania. Aby uzyskać więcej informacji, zobacz How to: Add content controls to Word documents (Instrukcje: dodawanie kontrolek zawartości do dokumentów programu Word).

Typowe funkcje kontrolek zawartości

Większość kontrolek zawartości udostępnia zestaw elementów członkowskich, których można użyć do wykonywania typowych zadań. W poniższej tabeli opisano niektóre zadania, które można wykonać przy użyciu tych elementów członkowskich.

Dla tego zadania: Wykonaj następujące czynności:
Pobierz lub ustaw tekst wyświetlany w kontrolce. Użyj właściwości Text. Uwaga:PictureContentControl typy i ContentControl nie mają tej właściwości.
Pobierz lub ustaw tekst tymczasowy wyświetlany w kontrolce, dopóki użytkownik nie edytuje kontrolki, kontrolka zostanie wypełniona danymi ze źródła danych lub zawartość kontrolki zostanie usunięta. Użyj właściwości Symbol zastępczyText. Uwaga:PictureContentControl typ nie ma tej właściwości.
Pobierz lub ustaw tytuł wyświetlany w obramowanie kontrolki zawartości po kliknięciu go przez użytkownika. Użyj właściwości Title.
Usuń kontrolkę z dokumentu automatycznie po zmodyfikowaniu kontrolki przez użytkownika. (Tekst w kontrolce pozostaje w dokumencie). Użyj właściwości Temporary.
Uruchom kod, gdy użytkownik kliknie w kontrolce zawartości lub gdy kursor zostanie przeniesiony programowo do kontrolki zawartości. Obsługa Entering zdarzenia kontrolki.
Uruchom kod, gdy użytkownik kliknie poza kontrolką zawartości lub gdy kursor zostanie przeniesiony poza kontrolkę zawartości programowo. Obsługa Exiting zdarzenia kontrolki.
Uruchom kod po dodaniu kontrolki zawartości do dokumentu w wyniku operacji ponownego wykonania lub cofnięcia. Obsługa Added zdarzenia kontrolki.
Uruchom kod tuż przed usunięciem kontrolki zawartości z dokumentu. Obsługa Deleting zdarzenia kontrolki.

Ochrona części dokumentów przy użyciu kontrolek zawartości

Gdy chronisz część dokumentu, uniemożliwiasz użytkownikom zmianę lub usunięcie zawartości w tej części dokumentu. Istnieje kilka sposobów ochrony części dokumentu przy użyciu kontrolek zawartości.

Jeśli obszar, który chcesz chronić, znajduje się wewnątrz kontrolki zawartości, możesz użyć właściwości kontrolki zawartości, aby uniemożliwić użytkownikom edytowanie lub usuwanie kontrolki:

  • Właściwość LockContents uniemożliwia użytkownikom edytowanie zawartości.

  • Właściwość LockContentControl uniemożliwia użytkownikom usunięcie kontrolki.

    Jeśli obszar, który chcesz chronić, nie znajduje się w kontrolce zawartości lub jeśli chcesz chronić obszar zawierający kontrolki zawartości i inne typy zawartości, możesz umieścić cały obszar w GroupContentControlobiekcie . W przeciwieństwie do innych kontrolek zawartości interfejs GroupContentControl użytkownika nie jest widoczny dla użytkownika. Jedynym celem jest zdefiniowanie regionu, którego użytkownicy nie mogą edytować.

Uwaga

Jeśli tworzysz kontrolki zawartości osadzonej GroupContentControl , osadzone kontrolki zawartości nie są automatycznie chronione. Należy użyć właściwości LockContents każdej osadzonej kontrolki, aby uniemożliwić użytkownikom edytowanie ich zawartości.

Aby uzyskać więcej informacji o sposobie używania kontrolek zawartości do ochrony części dokumentów, zobacz Jak chronić części dokumentów przy użyciu kontrolek zawartości.

Wiązanie danych z kontrolkami zawartości

Dane w dokumentach można wyświetlać, wiążąc kontrolkę zawartości ze źródłem danych. Po zaktualizowaniu źródła danych kontrolka zawartości odzwierciedla zmiany. Możesz również zapisać zmiany z powrotem w źródle danych.

Kontrolki zawartości udostępniają następujące opcje powiązania danych:

  • Kontrolki zawartości można powiązać z polami bazy danych lub obiektami zarządzanymi przy użyciu tego samego modelu powiązania danych co formularze systemu Windows.

  • Kontrolki zawartości można powiązać z elementami w elementach XML (nazwanych również niestandardowymi częściami XML), które są osadzone w dokumencie.

    Aby zapoznać się z omówieniem powiązań kontrolek hostów w rozwiązaniach pakietu Office do danych, zobacz Wiązanie danych z kontrolkami w rozwiązaniach pakietu Office.

Korzystanie z modelu powiązania danych formularzy systemu Windows

Większość kontrolek zawartości obsługuje prosty model powiązania danych używany przez formularze Systemu Windows. Proste powiązanie danych oznacza, że kontrolka jest powiązana z pojedynczym elementem danych, takim jak wartość w kolumnie tabeli danych. Aby uzyskać więcej informacji, zobacz Powiązanie danych i Formularze systemu Windows.

W projektach na poziomie dokumentu można powiązać dane z kontrolkami zawartości przy użyciu okna Źródła danych w programie Visual Studio. Aby uzyskać więcej informacji na temat dodawania kontrolek zawartości powiązanej z danymi do dokumentów, zobacz Instrukcje: wypełnianie dokumentów danymi z bazy danych i Instrukcje: wypełnianie dokumentów danymi z obiektów.

W poniższej tabeli wymieniono kontrolki zawartości, które można powiązać z poszczególnymi typami danych w oknie Źródła danych.

Typ danych Domyślna kontrolka zawartości Inne kontrolki zawartości, które mogą być powiązane z tym typem danych
Boolean

Byte

Char

Double

Enum

Guid

Int16

Int32

Int64

SByte

Single

String

TimeSpan

UInt16

UInt32

UInt64
PlainTextContentControl BuildingBlockGalleryContentControl

ComboBoxContentControl

DatePickerContentControl

RichTextContentControl
DateTime DatePickerContentControl BuildingBlockGalleryContentControl

ComboBoxContentControl

PlainTextContentControl

RichTextContentControl
Image

Byte Tablicy
PictureContentControl Brak

W projektach dodatków na poziomie dokumentu i WSTO można programowo powiązać kontrolkę zawartości ze źródłem danych przy użyciu Add metody DataBindings właściwości kontrolki. Jeśli to zrobisz, przekaż ciąg Text do parametru Add propertyName metody . Właściwość Text jest domyślną właściwością powiązania danych kontrolek zawartości.

Kontrolki zawartości obsługują również dwukierunkowe powiązanie danych, w którym zmiany w kontrolce są aktualizowane do źródła danych. Aby uzyskać więcej informacji, zobacz How to: Update a data source with data from a host control (Instrukcje: aktualizowanie źródła danych przy użyciu danych z kontrolki hosta).

Uwaga

Kontrolki zawartości nie obsługują złożonego powiązania danych. Jeśli powiążesz DropDownListContentControl element lub ComboBoxContentControl ze źródłem danych przy użyciu modelu danych Windows Forms, użytkownicy zobaczą tylko jedną wartość po kliknięciu kontrolki. Jeśli chcesz powiązać te kontrolki z zestawem wartości danych, które użytkownicy mogą wybrać, możesz powiązać te kontrolki z elementami w niestandardowej części XML.

Wiązanie kontrolek zawartości z niestandardowymi częściami XML

Niektóre kontrolki zawartości można powiązać z elementami w niestandardowych częściach XML osadzonych w dokumencie. Aby uzyskać więcej informacji na temat niestandardowych części XML, zobacz Omówienie niestandardowych części XML.

Aby powiązać kontrolkę zawartości z elementem w niestandardowej części XML, użyj właściwości XMLMapping kontrolki. W poniższym przykładzie kodu pokazano, jak powiązać element PlainTextContentControlPrice z elementem w Product węźle w niestandardowej części XML, która została już dodana do dokumentu.

plainTextContentControl1.XMLMapping.SetMapping("/Product/Price", String.Empty, null);

Aby zapoznać się z przewodnikiem, który pokazuje, jak powiązać kontrolki zawartości z niestandardowymi częściami XML bardziej szczegółowo, zobacz Przewodnik: wiązanie kontrolek zawartości z niestandardowymi częściami XML.

Po powiązaniu kontrolki zawartości z niestandardową częścią XML powiązanie danych dwukierunkowych jest automatycznie włączone. Jeśli użytkownik edytuje tekst w kontrolce, odpowiednie elementy XML zostaną automatycznie zaktualizowane. Podobnie, jeśli wartości elementów w niestandardowych częściach XML zostaną zmienione, kontrolki zawartości powiązane z elementami XML będą wyświetlać nowe dane.

Można powiązać następujące typy kontrolek zawartości z niestandardowymi częściami XML:

Zdarzenia powiązania danych dla kontrolek zawartości

Wszystkie kontrolki zawartości udostępniają zestaw zdarzeń, które można obsłużyć do wykonywania zadań związanych z danymi, takich jak weryfikowanie, czy tekst w kontrolce spełnia określone kryteria przed zaktualizowaniem źródła danych. W poniższej tabeli wymieniono zdarzenia kontroli zawartości powiązane z powiązaniem danych.

Zadanie Wydarzenie
Uruchom kod tuż przed automatycznym aktualizowaniem tekstu w kontrolce zawartości powiązanej z niestandardową częścią XML. ContentUpdating
Uruchom kod tuż przed automatycznym aktualizowaniem danych w niestandardowej części XML powiązanej z kontrolką zawartości (czyli po zmianie tekstu w kontrolce zawartości). StoreUpdating
Uruchom własny kod, aby zweryfikować zawartość kontrolki zgodnie z kryteriami niestandardowymi. Validating
Uruchom kod po pomyślnym zweryfikowaniu zawartości kontrolki. Validated

Ograniczenia kontrolek zawartości

W przypadku korzystania z kontrolek zawartości w projektach pakietu Office należy pamiętać o następujących ograniczeniach.

Różnice między czasem projektowania a środowiskiem uruchomieniowym

Wiele ograniczeń nakładanych przez program Microsoft Office Word na kontrolki zawartości w czasie wykonywania nie jest wymuszanych w czasie projektowania. Podczas projektowania interfejsu użytkownika rozwiązania na poziomie dokumentu w programie Visual Studio należy zmodyfikować kontrolki zawartości tylko w sposób obsługiwany w czasie wykonywania.

Jeśli zmodyfikujesz kontrolkę zawartości w czasie projektowania w taki sposób, że kontrolka nie jest obsługiwana w czasie wykonywania, projektant programu Visual Studio nie powiadomi Cię o nieobsługiwanych zmianach. Jednak podczas debugowania lub uruchamiania projektu albo podczas zapisywania, a następnie ponownego otwierania projektu program Word wyświetli komunikat o błędzie i zażąda uprawnienia do naprawy dokumentu. Po naprawieniu dokumentu program Word usuwa całą nieobsługiwaną zawartość i formatowanie z kontrolki.

Na przykład program Word nie uniemożliwia dodawania tabeli do PlainTextContentControl tabeli w czasie projektowania. Jednak ponieważ PlainTextContentControl obiekty nie mogą zawierać tabel w czasie wykonywania, program Word wyświetli komunikat o błędzie po otwarciu dokumentu.

Należy również pamiętać, że wiele właściwości definiujących zachowanie kontrolek zawartości nie ma wpływu w czasie projektowania. Jeśli na przykład ustawisz właściwość LockContents kontrolki zawartości na True w czasie projektowania, nadal możesz edytować tekst w kontrolce w projektancie programu Visual Studio. Ta właściwość uniemożliwia tylko użytkownikom edytowanie kontrolki w czasie wykonywania.

Ograniczenia zdarzeń

Kontrolki zawartości nie zapewniają zdarzenia, które jest zgłaszane, gdy użytkownik zmienia tekst lub inne elementy w kontrolce. Na przykład nie ma żadnego zdarzenia, które jest zgłaszane, gdy użytkownik wybierze inny element w elemencie DropDownListContentControl lub ComboBoxContentControl.

Aby określić, kiedy użytkownik edytuje zawartość kontrolki zawartości, możesz powiązać kontrolkę z niestandardową częścią XML, a następnie obsłużyć StoreUpdating zdarzenie. To zdarzenie jest zgłaszane, gdy użytkownik zmienia zawartość kontrolki powiązanej z niestandardową częścią XML. Aby zapoznać się z przewodnikiem, który pokazuje, jak powiązać kontrolkę zawartości z niestandardową częścią XML, zobacz Przewodnik: wiązanie kontrolek zawartości z niestandardowymi częściami XML.

Kontrolki zawartości pola wyboru w projektach programu Word

Program Word 2010 wprowadził nowy typ kontrolki zawartości, która reprezentuje pole wyboru. Jednak środowisko uruchomieniowe Visual Studio Tools dla pakietu Office nie zapewnia odpowiedniego typu CheckBoxContentControl do użycia w projektach pakietu Office. Aby utworzyć kontrolkę zawartości pola wyboru w projekcie programu Word 2013 lub Word 2010, użyj AddContentControl metody do utworzenia ContentControl obiektu i przekaż wdContentControlCheckBox wartość do metody w celu określenia kontrolki zawartości pola wyboru. W poniższym przykładzie kodu pokazano, jak to zrobić.

this.Paragraphs[1].Range.InsertParagraphBefore();
this.Paragraphs[1].Range.Select();
Microsoft.Office.Tools.Word.ContentControl checkBoxControl1 = 
    this.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox);

checkBoxControl1.Checked = true;