共用方式為


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

本逐步解說示範如何建立文件層級自訂,以使用內容控制項在 Microsoft Office Word 範本中建立結構化且可重複使用的內容。

適用於: 本主題中的資訊適用於 Word 的文件層級專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型所提供的功能

Word 可讓您建立可重複使用的文件組件集合,稱為 建置區塊。 本操作指南示範如何建立兩個資料表作為組件。 每個表格都包含數個內容控制項,這些控制項可以保存不同類型的內容,例如純文字或日期。 其中一個表格包含員工的相關資訊,另一個表格包含客戶意見反應。

從範本建立文件之後,您可以使用數個 BuildingBlockGalleryContentControl 物件將任一表格新增至文件,這些物件會在範本中顯示可用的建置區塊。

本逐步解說將說明下列工作:

  • 在設計階段建立包含 Word 範本中內容控制項的資料表。

  • 以程式設計方式填入下拉式方塊內容控制項和下拉式清單內容控制項。

  • 防止使用者編輯指定的表格。

  • 將表格新增至範本的建置區塊集合。

  • 建立內容控制項,以顯示範本中可用的建置區塊。

    備註

    在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 個人化 IDE

先決條件

您需要下列組件才能完成本步驟解說:

建立新的 Word 範本專案

建立 Word 範本,以便使用者可以輕鬆建立自己的副本。

建立新的 Word 範本專案

  1. 建立名稱為 MyBuildingBlockTemplate 的 Word 範本專案。 在精靈中,在解決方案中建立新文件。 如需詳細資訊,請參閱 如何:在 Visual Studio 中建立 Office 專案

    Visual Studio 會在設計工具中開啟新的 Word 範本,並將 MyBuildingBlockTemplate 專案新增至 [方案總管]。

建立員工資料表

建立包含四種不同類型內容控制項的資料表,使用者可以在其中輸入員工的相關資訊。

建立員工資料表

  1. 在裝載於 Visual Studio 設計工具的 Word 範本中,在功能區上,按一下 [插入] 索引標籤。

  2. [資料表] 群組中,按一下 [資料表],然後插入具有兩欄和四列的資料表。

  3. 在第一欄中鍵入文字,使其類似於下列欄:

    員工姓名
    僱用日期
    標題
    圖片
  4. 按一下第二欄中的第一個儲存格 (在 [員工名稱] 旁邊)。

  5. 在功能區上,按一下 [開發人員] 索引標籤。

    備註

    如果「 開發人員」 標籤不可見,您必須先顯示它。 如需詳細資訊,請參閱 如何:在功能區上顯示開發人員索引標籤

  6. [控制項] 群組中,按一下 [文字] 按鈕 PlainTextContentControlPlainTextContentControl 以將內容控制項新增至PlainTextContentControl第一個儲存格。

  7. 按一下第二欄中的第二個儲存格(在 僱用日期 旁邊)。

  8. [控制項] 群組中,按一下 [日期選擇器] 按鈕 DatePickerContentControl,將日期選擇器新增至第二個儲存格中。

  9. 按一下第二欄的第三個儲存格(標題旁邊)。

  10. [控制項] 群組中,按一下 [下拉式方塊] 按鈕 ComboBoxContentControl ComboBoxContentControl,將其新增到第三個儲存格中。

  11. 按一下第二欄中的最後一個儲存格 ( 在 [圖片] 旁邊)。

  12. [控制項] 群組中,按一下 [圖片內容控制項] 按鈕 PictureContentControl PictureContentControl,將一個 PictureContentControl 新增至最後一個儲存格。

建立客戶意見反應表

建立包含三種不同類型內容控制項的資料表,使用者可以在其中輸入客戶意見反應資訊。

建立客戶意見反應表格

  1. 在 Word 範本中,按一下您稍早新增的員工資料表後面的行,然後按 Enter 鍵以新增段落。

  2. 在功能區上,按一下 「插入」 標籤。

  3. [資料表] 群組中,按一下 [資料表],然後插入具有兩欄和三列的資料表。

  4. 在第一欄中鍵入文字,使其類似於下列欄:

    客戶名稱
    滿意度評分
    評論
  5. 按一下第二欄的第一個儲存格 ( 客戶名稱旁邊)。

  6. 在功能區上,按一下 [開發人員] 索引標籤。

  7. [控制項] 群組中,按一下 [文字] 按鈕 PlainTextContentControlPlainTextContentControl 以將內容控制項新增至PlainTextContentControl第一個儲存格。

  8. 按一下第二欄的第二個儲存格( 在「滿意度評等」旁邊)。

  9. [控制項] 群組中,按一下 [下拉式清單] 按鈕 DropDownListContentControl,將 DropDownListContentControl 新增至第二個儲存格。

  10. 按一下第二欄的最後一個儲存格(在 「註解」旁邊)。

  11. [控制項] 群組中,按一下 [豐富文字] 按鈕 RichTextContentControl,將項目新增至RichTextContentControl最後一個儲存格。

以程式化方式填入組合方塊和下拉式清單

您可以使用 Visual Studio 中的 [屬性] 視窗,在設計階段初始化內容控制項。 您也可以在執行時期起始設定它們,這可讓您動態設定其起始狀態。 在本逐步解說中,請使用程式碼在執行階段填入ComboBoxContentControlDropDownListContentControl中的專案,讓您可以查看這些物件的運作方式。

以程式設計方式修改內容控制項的 UI

  1. [方案總管] 中,以滑鼠右鍵按一下 [ThisDocument.cs ] 或 [ThisDocument.vb],然後按一下 [ 檢視程式碼]。

  2. 將下列程式碼 ThisDocument 新增至類別。 此程式碼會宣告您將稍後在本逐步解說中使用的數個物件。

    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
    
  3. 請將下列程式碼新增至 ThisDocument 類別的 ThisDocument_Startup 方法。 此程式碼會將項目新增至資料表中的ComboBoxContentControlDropDownListContentControl,並在使用者編輯之前設定及顯示每個控制項中的預留文字。

    comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own";
    comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0);
    comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1);
    comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2);
    
    dropDownListContentControl1.PlaceholderText =
        "Choose a rating (1 lowest, 3 highest)";
    dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0);
    dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1);
    dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
    

防止使用者編輯員工資料表

使用 GroupContentControl 您稍早宣告的物件來保護員工資料表。 保護表格之後,使用者仍可編輯表格中的內容控制項。 但是,他們無法編輯第一列中的文字或以其他方式修改表格,例如新增或刪除行和列。 如需如何使用 保護 GroupContentControl 文件部分的詳細資訊,請參閱 內容控制項

若要防止使用者編輯員工資料表

  1. 在您在上一個步驟中新增的程式碼之後,將下列程式碼新增至 ThisDocument_Startup 類別的方法 ThisDocument 。 此程式碼可防止使用者將資料表放在您稍早宣告的物件內 GroupContentControl ,以編輯員工資料表。

    this.Tables[1].Range.Select();
    groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    

將資料表新增至建置區塊集合

將表格新增至範本中的文件建置區塊集合,以便使用者可以將您建立的表格插入文件中。 如需文件建置組塊的詳細資訊,請參閱 內容控制項

將表格新增至範本中的建置區塊

  1. 請在您在上一個步驟中新添加的程式碼後,將下列程式碼新增至 ThisDocument 類別的 ThisDocument_Startup 方法。 此程式碼會將包含資料表的新建置組塊新增至 Microsoft.Office.Interop.Word.BuildingBlockEntries 集合,其中包含範本中所有可重複使用的建置組塊。 新的建構區塊會在名為 「員工與客戶資訊」 的新品類中定義,並指派建構區塊類型 Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1

    Word.Template template1 = this.AttachedTemplate as Word.Template;
    
    if (template1 != null)
    {
        object description = null;
        template1.BuildingBlockEntries.Add("Employee Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
        template1.BuildingBlockEntries.Add("Customer Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
    }
    
  2. 在您在上一個步驟中新增的程式碼之後,將下列程式碼新增至 ThisDocument_Startup 類別的方法 ThisDocument 。 此程式碼會從範本中刪除資料表。 不再需要這些表格,因為您已將它們新增至範本中可重複使用的建置區塊庫。 程式碼會先將文件置於設計模式,以便刪除受保護的員工資料表。

    if (!this.FormsDesign)
    {
        this.ToggleFormsDesign();
    }
    this.Tables[2].Delete();
    this.Tables[1].Delete();
    this.ToggleFormsDesign();
    

建立顯示建置組塊的內容控制項

建立內容控制項,以提供您先前建立的建置區塊 (亦即資料表) 的存取權。 使用者可以按一下此控制項,將表格新增至文件。

建立顯示建置區塊的內容控制項

  1. 請在您於上一個步驟新增的程式碼之後,將下列程式碼新增至 ThisDocument 類別的 ThisDocument_Startup 方法中。 此程式碼會初始 BuildingBlockGalleryContentControl 化您稍早宣告的物件。 顯示 BuildingBlockGalleryContentControl 在「 員工」和「客戶資訊」 類別中定義且具有「建置區塊類型 Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1」的所有建置區塊。

    buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[1].Range, "buildingBlockControl1");
    buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl1.PlaceholderText = "Choose your first building block";
    
    buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[2].Range, "buildingBlockControl2");
    buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl2.PlaceholderText = "Choose your second building block";
    

測試專案

使用者可以按一下文件中的建置區塊庫控制項,以插入員工資料表或客戶意見反應資料表。 使用者可以在兩個表格的內容控制項中輸入或選取回應。 使用者可以修改客戶意見回饋表的其他部分,但不應修改員工表的其他部分。

測試員工資料表

  1. F5 以執行專案。

  2. 按一下 [選擇您的第一個建置區塊 ] 以顯示第一個建置區塊庫內容控制項。

  3. 按一下控制項中 [自訂資源庫 1 ] 標題旁的下拉箭號,然後選取 [員工資料表]。

  4. 按一下 [員工名稱 ] 儲存格右側的儲存格,然後輸入名稱。

    確認您只能將文字新增至此儲存格。 它 PlainTextContentControl 允許使用者只新增文字,而不新增其他類型的內容,例如藝術或表格。

  5. 僱用日期 儲存格右側的儲存格中按一下,然後在日期選擇器中選取日期。

  6. 按一下 [職稱] 儲存格右側的儲存格,然後在下拉式方塊中選取其中一個職稱。

    或者,鍵入清單中不在的職稱名稱。 這是可能的,因為 ComboBoxContentControl 可以讓使用者從項目清單中選取,或輸入自己的項目。

  7. 按一下 [圖片] 儲存格右側儲存格中的圖示,然後瀏覽至影像以顯示它。

  8. 嘗試在表格中新增行或列,並嘗試從表格中刪除列和列。 確認您無法修改表格。 GroupContentControl 防止您進行任何修改。

測試客戶意見反應表格

  1. 按一下 選擇您的第二個建置區塊 以顯示第二個建置區塊庫內容控制項。

  2. 按一下控制項中 [自訂資源庫 1 ] 標題旁的下拉箭頭,然後選取 [客戶資料表]。

  3. 按一下 [客戶名稱 ] 儲存格右側的儲存格,然後輸入名稱。

  4. 按一下「 滿意度評等 」儲存格右側的儲存格,然後選取其中一個可用選項。

    請確認您無法輸入自訂的內容。 只 DropDownListContentControl 允許使用者從項目清單中選取。

  5. 按一下 [註解] 儲存格右側的儲存格,然後輸入一些註解。

    或者,新增文字以外的一些內容,例如圖稿或內嵌表格。 這是可能的,因為 RichTextContentControl 讓使用者能夠新增非文字的內容。

  6. 確認您可以將列或欄新增至表格,以及是否可以從表格中刪除列和欄。 這是可能的,因為您沒有透過將資料表放在 GroupContentControl 中來保護它。

  7. 關閉範本。

後續步驟

您可以從本主題進一步瞭解如何使用內容控制項: