內容控制項可讓您設計具有下列功能的文件和範本:
具有受控輸入(如表單)的使用者介面(UI)。
防止使用者編輯文件或範本的受保護區段的限制。 如需詳細資訊,請參閱 使用內容控制項保護文件的部分。
資料繫結至資料來源。 如需詳細資訊,請參閱 將資料繫結至內容控制項。
適用於: 本主題中的資訊適用於 Word 的文件層級專案和 VSTO 增益集專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型所提供的功能。
影片如需相關影片示範,請參閱使用 Visual Studio Tools for the Office system 將資料繫結至 Word 2007 內容控制項 (3.0)。
關於內容控制項
內容控制項提供針對使用者輸入和列印進行最佳化的 UI。 當您將內容控制項新增至文件時,控制項會以框線、標題和暫存文字來識別,這些文字可以向使用者提供指示。 控制項的框線和標題不會出現在文件的列印版本中。
例如,如果您想要使用者在文件的某個區段中輸入日期,您可以將日期選擇器內容控制項新增至文件。 當使用者按一下控制項時,標準日期選擇器 UI 隨即顯示。 您也可以設定控制項的屬性,以設定顯示的區域行事曆,並指定日期格式。 使用者選擇日期之後,控制項的 UI 會隱藏,而且只有在使用者列印文件時才會出現日期。
內容控制項也可協助您執行下列動作:
防止使用者編輯或刪除文件的某些部分。 如果您在文件或範本中有使用者應該能夠閱讀但無法編輯的資訊,或者您希望使用者能夠編輯內容控制項但無法刪除它們,這非常有用。
將文件或範本的部分繫結至資料。 您可以將內容控制項繫結至資料庫欄位、.NET Framework 中的受管理物件、儲存在文件中的 XML 元素,以及其他資料來源。
在文件層級專案中,您可以在設計階段或執行階段將內容控制項新增至文件。 在 VSTO 增益集專案中,您可以在執行階段將內容控制項新增至任何開啟的文件。 如需詳細資訊,請參閱 如何:將內容控制項新增至 Word 文件。
備註
您只能在以「開放 XML」格式儲存的文件中使用內容控制項。 您無法在以 Word 97-2003 文件 (.doc) 格式儲存的文件中使用內容控制項。
內容控制項的類型
您可以將九種不同類型的內容控制項新增至文件。 大部分的內容控制項在命名空間中 Microsoft.Office.Tools.Word 都有對應的類型。 您也可以使用泛型 ContentControl,它可以代表任何可用的內容控制項。 如需示範如何使用每個可用內容控制項的逐步解說,請參閱 逐步解說:使用內容控制項建立範本。
建置區塊圖庫
建置區塊庫可讓使用者從 文件建置區塊 清單中選取要插入到文件中。 文件建置區塊是已建立以供多次使用的內容片段,例如通用封面、格式化表格或標題。 如需詳細資訊,請參閱 BuildingBlockGalleryContentControl 類型。 如需建置區塊的詳細資訊,請參閱 Word 2007 中開發人員的新功能。
核取方塊
核取方塊提供一個用於表示二元狀態的使用者介面元素:已選取或未選取。
不同於其他類型的內容控制項,Visual Studio Tools for Office 執行階段不會提供代表核取方塊內容控制項的特定類型。 換句話說,沒有 CheckBoxContentControl 類型。 不過,您仍然可以透過程式設計方式將泛型 ContentControl 新增至文件來建立核取方塊內容控制項。 如需詳細資訊,請參閱 Word 專案中的核取方塊內容控制項。
組合方塊
複合框會顯示使用者可以選取的項目清單。 與下拉式清單不同,下拉式方塊可讓使用者新增自己的項目。 如需詳細資訊,請參閱 ComboBoxContentControl 類型。
日期選擇器
日期選擇器提供用於選擇日期的行事曆 UI。 當使用者按一下控制項中的下拉箭號時,行事曆就會顯示。 您可以使用區域日曆和不同的日期格式。 如需詳細資訊,請參閱 DatePickerContentControl 類型。
下拉式清單
下拉式清單會顯示使用者可以選取的項目清單。 與下拉式方塊不同,下拉式清單不允許使用者新增或編輯項目。 如需詳細資訊,請參閱 DropDownListContentControl 類型。
群體
群組控制項會定義使用者無法編輯或刪除的文件的受保護區域。 群組控制項可以包含任何文件項目,例如文字、表格、圖形和其他內容控制項。 如需詳細資訊,請參閱 GroupContentControl 類型。
圖片
Picture Control 會顯示影像。 您可以在設計階段或執行階段指定影像,或使用者可以按一下此控制項來選取要插入文件中的影像。 如需詳細資訊,請參閱 PictureContentControl 類型。
RTF
豐富文本控制項包含文字或其他項目,例如表格、圖片或其他內容控制項。 如需詳細資訊,請參閱 RichTextContentControl 類型。
純文字
純文字控制項包含文字。 純文字控制項不能包含其他項目,例如表格、圖片或其他內容控制項。 此外,純文字控制項中的所有文字都具有相同的格式。 例如,如果您將純文字控制項中句子的一個單字斜體化,則控制項內的所有文字都會斜體化。 如需詳細資訊,請參閱 PlainTextContentControl 類型。
一般內容控制項
泛型內容控制項是 ContentControl 可代表任何可用內容控制項類型的物件。 您可以使用Type屬性的功能,將ContentControl物件的行為變更為類似於不同型態的內容控制。 例如,如果您建立ContentControl 來表示純文字控制項的物件,您可以在執行階段變更該物件,使其行為類似於下拉式方塊。
您只能在執行階段建立物件,而不能在設計階段建立 ContentControl 物件。 如需詳細資訊,請參閱 如何:將內容控制項新增至 Word 文件。
內容控制項的一般功能
大部分的內容控制項都會共用一組成員,可用來執行一般工作。 下表說明您可以使用這些成員來執行的一些工作。
| 針對這項工作: | 這樣做: |
|---|---|
| 取得或設定控制項中顯示的文字。 | 使用 Text 屬性。 注意:PictureContentControl和ContentControl類型沒有此屬性。 |
| 取得或設定控制項中顯示的暫存文字,直到使用者編輯控制項、控制項填入資料來源的資料,或刪除控制項的內容為止。 | 使用 PlaceholderText 屬性。 注意: 類型 PictureContentControl 沒有此屬性。 |
| 取得或設定內容控制項在使用者按一下時於框線中顯示的標題。 | 使用 Title 屬性。 |
| 使用者編輯控制項後,自動從文件中移除控制項。 (控制項中的文字仍保留在文件中。 | 使用 「暫存」 屬性。 |
| 當使用者按一下內容控制項時,或以程式設計方式將游標移至內容控制項時,執行程式碼。 | 處理 Entering 控制項的事件。 |
| 當使用者按一下內容控制項外部時,或以程式設計方式將游標移至內容控制項外部時,執行程式碼。 | 處理 Exiting 控制項的事件。 |
| 在內容控制項新增至文件之後,作為重做或復原作業的結果,執行程式碼。 | 處理 Added 控制項的事件。 |
| 在從文件中刪除內容控制項之前執行程式碼。 | 處理 Deleting 控制項的事件。 |
使用內容控制項保護文件的部分
當您保護文件的一部分時,您可以防止使用者變更或刪除文件該部分的內容。 您可以使用內容控制項來保護文件的各個部分,有數種方式。
如果您要保護的區域位於內容控制項內,您可以使用內容控制項的屬性來防止使用者編輯或刪除控制項:
LockContents 屬性可防止使用者編輯內容。
LockContentControl 屬性可防止使用者刪除控制項。
如果您要保護的區域不在內容控制項內,或您想要保護包含內容控制項和其他類型內容的區域,您可以將整個區域 GroupContentControl放在 . 不同於其他內容控制項,a GroupContentControl 不提供使用者可見的 UI。 它的唯一目的是定義使用者無法編輯的區域。
備註
如果您建立了包含內嵌內容控制項的GroupContentControl,則這些內嵌內容控制項不會自動受到保護。 您必須使用每個內嵌控制項的 LockContents 屬性,以防止使用者編輯其內容。
如需如何使用內容控制項來保護文件部分的詳細資訊,請參閱 如何:使用內容控制項保護文件部分。
將資料繫結至內容控制項
您可以將內容控制項繫結至資料來源,以顯示文件中的資料。 更新資料來源時,內容控制項會反映變更。 您也可以將變更儲存回資料來源。
內容控制項提供下列資料繫結選項:
您可以使用與 Windows Forms 相同的資料繫結模型,將內容控制項繫結至資料庫欄位或受控物件。
您可以將內容控制項繫結至內嵌在文件中的 XML 片段 (也稱為 自訂 XML 部分) 中的元素。
如需將 Office 解決方案中的主機控制項繫結至資料的概觀,請參閱 將資料繫結至 Office 解決方案中的控制項。
使用 Windows Forms 資料繫結模型
大部分的內容控制項都支援 Windows Forms 使用的簡單資料繫結模型。 簡單資料繫結是指控制項繫結至單一資料元素,例如資料表列中的值。 如需詳細資訊,請參閱 資料繫結和 Windows Forms。
在文件層級專案中,您可以使用 Visual Studio 中的 [資料來源] 視窗,將資料繫結至內容控制項。 如需如何將資料繫結內容控制項新增至文件的詳細資訊,請參閱 如何:使用資料庫中的資料填入文件 和 如何:使用物件中的資料填入文件。
下表列出您可以系結至 [ 資料來源] 視窗中每個資料類型的內容控制項。
在文件層級和 VSTO 增益集專案中,您可以使用控制項屬性的DataBindings方法Add,以程式設計方式將內容控制項系結至資料來源。 如果您這樣做,請將字串 Text 傳遞至方法的 Add 參數。 Text 屬性是內容控制項的預設資料繫結屬性。
內容控制項也支援雙向資料繫結,其中控制項中的變更會更新至資料來源。 如需詳細資訊,請參閱 如何:使用主機控制項中的資料更新資料來源。
備註
內容控制項不支援複雜的資料繫結。 如果您使用 Windows Forms 資料模型將 DropDownListContentControl 或 ComboBoxContentControl 繫結至資料來源,使用者在按一下控制項時只會看到一個單一的值。 如果您想要將這些控制項繫結至使用者可選擇的一組資料值,您可以將這些控制項繫結至自訂 XML 零件中的元素。
將內容控制項繫結至自訂 XML 組件
您可以將某些內容控制項繫結至內嵌在文件中的自訂 XML 組件中的元素。 如需自訂 XML 組件的相關資訊,請參閱 自訂 XML 組件概觀。
若要將內容控制項繫結至自訂 XML 組件中的元素,請使用控制項的 XMLMapping 屬性。 以下程式碼範例說明如何將 PlainTextContentControl 繫結到已新增至文件中的自訂 XML 部件的 Product 節點下的 Price 元素。
如需示範如何更詳細地將內容控制項繫結至自訂 XML 組件的逐步解說,請參閱 逐步解說:將內容控制項繫結至自訂 XML 組件。
當您將內容控制項繫結至自訂 XML 零件時,會自動啟用雙向資料繫結。 如果使用者編輯控制項中的文字,則會自動更新對應的 XML 元素。 同樣地,如果自訂 XML 組件中的元素值已變更,則繫結至 XML 元素的內容控制項將顯示新資料。
您可以將下列類型的內容控制項繫結至自訂 XML 組件:
內容控制項的資料繫結事件
所有內容控制項都會提供一組事件,您可以處理這些事件來執行與資料相關的工作,例如在更新資料來源之前驗證控制項中的文字是否符合特定準則。 下表列出與資料繫結相關的內容控制項事件。
| 任務 | Event |
|---|---|
| 在 Word 自動更新繫結至自訂 XML 組件之內容控制項中的文字之前執行程式碼。 | ContentUpdating |
| 在 Word 自動更新繫結至內容控制項之自訂 XML 組件中的資料之前執行程式碼 (亦即,在內容控制項中的文字變更之後)。 | StoreUpdating |
| 執行您自己的程式碼,根據自訂準則驗證控制項的內容。 | Validating |
| 在成功驗證控制項的內容之後執行程式碼。 | Validated |
內容控制項的限制
當您在 Office 專案中使用內容控制項時,請注意下列限制。
設計時與執行階段之間的行為差異
Microsoft Office Word 在執行階段對內容控制項施加的許多限制不會在設計階段強制執行。 當您在 Visual Studio 中設計文件層級解決方案的 UI 時,請務必只以執行階段支援的方式修改內容控制項。
如果您在設計階段以控制項在執行階段不支援的方式修改內容控制項,Visual Studio 設計工具將不會警示您不支援的變更。 不過,當您偵錯或執行專案時,或儲存然後重新開啟專案時,Word 會顯示錯誤訊息,並要求修復文件的權限。 當您修復文件時,Word 會從控制項中移除所有不支援的內容和格式。
例如,Word 不會阻止您在設計階段將表格新增至 。PlainTextContentControl 不過,由於物件在執行階段不能包含表格,因此 PlainTextContentControl Word 會在開啟文件時顯示錯誤訊息。
另請注意,許多定義內容控制項行為的屬性在設計階段沒有影響。 例如,如果您在設計階段將內容控制項的 LockContents 屬性設定為 True ,您仍然可以在 Visual Studio 設計工具中編輯控制項中的文字。 此屬性只會防止使用者在執行階段編輯控制項。
事件限制
內容控制項不會提供使用者變更控制項中的文字或其他專案時引發的事件。 例如,當使用者在 DropDownListContentControl 或 ComboBoxContentControl 中選取不同的項目時,不會觸發任何事件。
若要判斷使用者何時編輯內容控制項的內容,您可以將控制項繫結至自訂 XML 組件,然後處理 StoreUpdating 事件。 當使用者變更繫結至自訂 XML 組件之控制項的內容時,就會引發此事件。 如需示範如何將內容控制項繫結至自訂 XML 組件的逐步解說,請參閱 逐步解說:將內容控制項繫結至自訂 XML 組件。
Word 專案中的核取方塊內容控制項
Word 2010 引進了一種新的內容控制項類型,代表核取方塊。 不過,Visual Studio Tools for Office 執行階段不會提供對應的 CheckBoxContentControl 類型,讓您在 Office 專案中使用。 若要在 Word 2013 或 Word 2010 專案中建立核取方塊內容控制項,請使用方法AddContentControlContentControl建立物件,並將值傳遞wdContentControlCheckBox至指定核取方塊內容控制項的方法。 下列程式碼範例示範如何執行此操作。
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;