內容控制項

更新: 2008 年 7 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

專案類型

  • 文件層級專案

  • 應用程式層級專案

Microsoft Office 版本

  • Word 2007

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

內容控制項可讓您用來設計具有下列功能的文件和範本:

  • 具有像表單一樣的受控制輸入的使用者介面 (UI)。

  • 防止使用者編輯文件或範本之受保護區段的限制。如需詳細資訊,請參閱使用內容控制項保護文件的部分區域。

  • 資料繫結至資料來源。如需詳細資訊,請參閱將資料繫結至內容控制項。

內容控制項概觀

內容控制項提供的 UI 已最佳化,適合進行使用者輸入和列印。將內容控制項加入至文件時,控制項是透過框線、標題以及可以提供使用者指示的暫存文字來進行識別。控制項的框線和標題不會出現在文件的列印版本中。

例如,如果想要使用者在文件的某個區段輸入日期,則可以在文件中加入日期選擇器內容控制項。當使用者按一下該控制項時,就會出現標準日期選擇器 UI。您也可以設定控制項屬性,以設定顯示的地區行事曆並指定日期格式。在使用者選擇日期之後,就會隱藏控制項的 UI,而在使用者列印文件時只會出現日期。

內容控制項也可以協助您進行下列作業:

  • 防止使用者編輯或刪除文件的某部分。如果文件或範本具有使用者應該可以讀取但無法編輯的資訊,或想要使用者可以編輯但無法刪除內容控制項,則這十分有用。

  • 將文件或範本部分繫結至資料。您可以將內容控制項繫結至資料庫欄位、.NET Framework 中的 Managed 物件、儲存在文件中的 XML 項目,以及其他資料來源。

在文件層級專案中,您可以在設計階段或執行階段將內容控制項加入至文件。從 Visual Studio 2008 Service Pack 1 (SP1) 開始,您可以使用應用程式層級增益集,在執行階段將內容控制項加入至任何開啟的文件。如需詳細資訊,請參閱 HOW TO:將內容控制項加入至 Word 文件

注意事項:

您只能在以 Open XML 格式儲存的 Word 2007 文件中使用內容控制項。如果是以 Word 97-2003 文件 (.doc) 格式儲存的文件,則無法使用內容控制項。

內容控制項型別

您可以使用 Visual Studio Tools for Office,將八種不同的內容控制項型別加入至文件。在 Microsoft.Office.Tools.Word 命名空間 (Namespace) 中,每種內容控制項都會有對應的類別 (Class)。您也可以使用 ContentControl 類別,這個類別可以代表任何可用的內容控制項。

如需示範如何使用每種可用內容控制項的逐步解說,請參閱逐步解說:使用內容控制項建立範本

建置組塊陳列庫

建置組塊陳列庫可讓使用者從「文件建置組塊」(Document Building Block) 清單中選取要插入至文件的建置組塊。文件建置組塊是已建立、可多次使用的內容片段,例如通用封面頁、格式化的資料表或標頭。如需詳細資訊,請參閱 BuildingBlockGalleryContentControl 類別。如需建置組塊的詳細資訊,請參閱開發人員可在 Word 2007 中使用的新功能

下拉式方塊

下拉式方塊會顯示使用者可以選取的項目清單。與下拉式清單不同的是,下拉式方塊可以讓使用者加入自己的項目。如需詳細資訊,請參閱 ComboBoxContentControl 類別。

日期選擇器

日期選擇器會提供用來選取日期的行事曆 UI。當使用者按一下控制項中的下拉箭號時,行事曆便會出現。您可以使用地區行事曆和不同的日期格式。如需詳細資訊,請參閱 DatePickerContentControl 類別。

下拉式清單

下拉式清單顯示使用者可以選取的項目清單。與下拉式方塊不同的是,下拉式清單不可以讓使用者加入或編輯項目。如需詳細資訊,請參閱 DropDownListContentControl 類別。

群組

群組控制項定義文件中使用者無法編輯或刪除的受保護區域。群組控制項可以包含任何文件項目,例如文字、資料表、圖形及其他內容控制項。如需詳細資訊,請參閱 GroupContentControl 類別。

圖片

圖片控制項會顯示影像。您可以在設計階段或執行階段指定影像,或使用者可以按一下這個控制項,以選取要插入文件中的影像。如需詳細資訊,請參閱 PictureContentControl 類別。

Rich Text 格式

Rich Text 格式控制項包含文字或其他項目,例如資料表、圖片或其他內容控制項。如需詳細資訊,請參閱 RichTextContentControl 類別。

純文字

純文字控制項包含文字。純文字控制項不可以包含其他項目,例如資料表、圖片或其他內容控制項。此外,純文字控制項中所有文字的格式都相同。例如,如果將純文字控制項之句子裡某個字設定為斜體,則該控制項內的所有文字都是斜體。如需詳細資訊,請參閱 PlainTextContentControl 類別。

ContentControl

ContentControl 物件是可變動的控制項,可以代表八種內容控制項的任何一種。您可以使用 Type 屬性變更 ContentControl 物件,讓它具有不同型別之內容控制項的行為。例如,如果建立代表純文字控制項的 ContentControl 物件,則可以在執行階段變更該物件,讓它具有下拉式方塊行為。

您只可以在執行階段建立 ContentControl 物件,而不是在設計階段。如需詳細資訊,請參閱 HOW TO:將內容控制項加入至 Word 文件

內容控制項的一般功能

Visual Studio Tools for Office 中的大部分內容控制項都共用一組可以用來執行一般工作的成員。下表會描述一些您可以使用這些成員執行的工作。

這個工作:

請執行:

取得或設定控制項中顯示的文字。

使用 Text 屬性。

注意事項:
PictureContentControlContentControl 類別沒有這個屬性。

取得或設定在使用者編輯控制項之前顯示在控制項中的暫存文字,控制項會填入 (Populate) 資料來源中的資料,否則會刪除控制項的內容。

使用 PlaceholderText 屬性。

注意事項:
PictureContentControl 類別沒有這個屬性。

取得或設定在使用者按一下內容控制項時,內容控制項框線中顯示的標題。

使用 Title 屬性。

在使用者編輯控制項之後,自動從文件中移除控制項 (控制項中的文字仍然會保留在文件中)。

使用 Temporary 屬性。

當使用者按一下內容控制項內部或以程式設計方式將游標移至內容控制項時,會執行程式碼。

處理控制項的 Entering 事件。

當使用者按一下內容控制項外部或以程式設計方式將游標移至內容控制項外部時,會執行程式碼。

處理控制項的 Exiting 事件。

在內容控制項因取消復原或復原作業而加入至文件之後執行程式碼。

處理控制項的 Added 事件。

只在從文件中刪除內容控制項之前執行程式碼。

處理控制項的 Deleting 事件。

使用內容控制項保護文件的部分區域

當您保護文件的某個部分時,使用者就無法變更或刪除文件中該部分的內容。有多種方法可以使用內容控制項來保護文件的某個部分。

如果想要保護的區域是在內容控制項內部,則可以使用內容控制項屬性,讓使用者無法編輯或刪除控制項:

  • LockContents 屬性會讓使用者無法編輯內容。

  • LockContentControl 屬性會讓使用者無法刪除控制項。

如果想要保護的區域在內容控制項外部,或想要保護的區域包含內容控制項和其他類型的內容,則可以將整個區域放在 GroupContentControl 中。與其他內容控制項不同的是,GroupContentControl 提供的是使用者看不到的 UI。它的唯一用途是定義使用者無法編輯的區域。

注意事項:

如果建立的 GroupContentControl 包含內嵌內容控制項,則不會自動保護這些內嵌內容控制項。您必須使用每個內嵌控制項的 LockContents 屬性,讓使用者無法編輯他們的內容。

如需如何使用內容控制項保護文件某部分的詳細資訊,請參閱 HOW TO:使用內容控制項保護文件的部分

將資料繫結至內容控制項

您可以將內容控制項繫結至資料來源,在文件中顯示資料。更新資料來源時,內容控制項會反映變更。您也可以將變更儲存回資料來源。

內容控制項提供下列資料繫結 (Data Binding) 選項:

  • 您可以使用與 Windows Form 相同的資料繫結模型,將內容控制項繫結至資料庫欄位或 Managed 物件。

  • 您可以將內容控制項繫結至內嵌於文件之 XML 片段中的項目 (又稱為「自訂 XML 組件」(Custom XML Part))。

如需將 Visual Studio Tools for Office 方案中的主控制項繫結至資料的概觀,請參閱將資料繫結至控制項

使用 Windows Form 資料繫結模型

大部分的內容控制項都支援 Windows Form 使用的簡單資料繫結模型。簡單資料繫結表示控制項是繫結至單一資料項目,例如資料表的資料欄值。如需詳細資訊,請參閱資料繫結和 Windows Form

在文件層級專案中,您可以使用 Visual Studio 中的 [資料來源] 視窗,將資料繫結至內容控制項。如需如何將資料繫結內容控制項加入至文件的詳細資訊,請參閱 HOW TO:將資料庫的資料填入文件HOW TO:將物件的資料填入文件

下表列出的內容控制項可以繫結至 [資料來源] 視窗中的每種資料型別。

資料型別

預設內容控制項

其他可以繫結至這個資料型別的內容控制項

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 陣列

PictureContentControl

在文件層級和應用程式層級專案中,您可以使用控制項之 DataBindings 屬性的 Add 方法,以程式設計方式將內容控制項繫結至資料來源。如果這麼做,則會將字串 Text 傳給 Add 方法的 propertyName 參數。Text 屬性是內容控制項的預設資料繫結屬性。

內容控制項也支援雙向資料繫結,在這類繫結中,控制項的變更會更新至資料來源。如需詳細資訊,請參閱 HOW TO:從主控制項中使用資料更新資料來源

注意事項:

內容控制項不支援複雜資料繫結。如果使用 Windows Form 資料模型將 DropDownListContentControlComboBoxContentControl 繫結至資料來源,則使用者在按一下控制項時只會看到單一值。如果想要將這些控制項繫結至一組使用者可以選擇的資料值,則可以將這些控制項繫結至自訂 XML 組件中的項目。

將內容控制項繫結至自訂 XML 組件

您可以將一些內容控制項繫結至內嵌於文件之自訂 XML 組件中的項目。如需自訂 XML 組件的詳細資訊,請參閱自訂 XML 組件概觀

若要將內容控制項繫結至自訂 XML 組件中的項目,請使用控制項的 XMLMapping 屬性。下列程式碼範例示範如何將 PlainTextContentControl 繫結至 Product 節點下的 Price 項目,而這個節點位在已加入至文件的自訂 XML 組件中。

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

如需示範如何將內容控制項繫結至自訂 XML 組件的詳細逐步解說,請參閱逐步解說:將內容控制項繫結至自訂 XML 組件

將內容控制項繫結至自訂 XML 組件時,會自動啟用雙向資料繫結。如果使用者編輯控制項中的文字,則會自動更新對應的 XML 項目。同樣地,如果自訂 XML 組件中的項目值變更,則繫結至 XML 項目的內容控制項會顯示新的資料。

您可以將下列型別的內容控制項繫結至自訂 XML 組件:

內容控制項的資料繫結事件

所有內容控制項都會提供一組您可以處理以執行資料相關工作的事件,例如驗證在更新資料來源之前,控制項中的文字是否符合特定準則。下表列出與資料繫結相關的內容控制項事件。

工作

事件

只在 Word 自動更新已繫結至自訂 XML 組件之內容控制項的文字之前執行程式碼。

ContentUpdating

只在 Word 自動更新已繫結至內容控制項之自訂 XML 組件中的資料之前 (也就是,內容控制項中的文字變更之後) 執行程式碼。

StoreUpdating

執行專屬的程式碼,以依據自訂準則驗證控制項的內容。

Validating

在成功驗證控制項的內容之後執行程式碼。

Validated

內容控制項限制

在 Visual Studio Tools for Office 專案中使用內容控制項時,請注意下列限制。

設計階段與執行階段的行為差異

Microsoft Office Word 在執行階段對內容控制項規定的許多限制,在設計階段時不會強制執行。在 Visual Studio 中設計文件層級方案的 UI 時,請務必只使用執行階段所支援的方式來修改內容控制項。

如果使用控制項在執行階段不支援的方式,在設計階段修改內容控制項,則 Visual Studio 設計工具不會警示您這項變更不受支援。不過,如果偵錯或執行專案,或在儲存後重新開啟專案,則 Word 會顯示錯誤訊息,並要求修復文件的使用權限。修復文件時,Word 會移除控制項的所有不支援內容和格式。

例如,Word 在設計階段並不會防止您將資料表加入至 PlainTextContentControl。然而,因為 PlainTextContentControl 物件在執行階段不可以包含資料表,所以 Word 會在開啟文件時顯示錯誤訊息。

也請注意,許多定義內容控制項行為的屬性在設計階段都沒有作用。例如,如果在設計階段將內容控制項的 LockContents 屬性設定為 True,則仍然可以在 Visual Studio 設計工具中編輯控制項中的文字。這個屬性只會防止使用者在執行階段編輯控制項。

事件限制

內容控制項並未提供在使用者變更控制項中的文字或其他項目時引發的事件。例如,使用者在 DropDownListContentControlComboBoxContentControl 中選取不同項目時不會引發事件。

若要判斷使用者何時編輯內容控制項的內容,則可以將控制項繫結至自訂 XML 組件,然後處理 StoreUpdating 事件。在使用者變更已繫結至自訂 XML 組件的控制項內容時,會引發這個事件。如需示範如何將內容控制項繫結至自訂 XML 組件的逐步解說,請參閱逐步解說:將內容控制項繫結至自訂 XML 組件

請參閱

工作

HOW TO:將內容控制項加入至 Word 文件

逐步解說:使用內容控制項建立範本

概念

將資料繫結至控制項

主項目和主控制項的程式設計限制

其他資源

Word 主控制項

Office 方案的資料

變更記錄

日期

記錄

原因

2008 年 7 月

加入有關透過應用程式層級專案使用內容控制項的資訊。

SP1 功能變更。