HOW TO:將內容控制項加入至 Word 文件
更新: 2008 年 7 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 專案類型
Microsoft Office 版本
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
在文件層級專案中,您可以於設計階段或執行階段,將內容控制項加入至專案中的文件。從 Visual Studio 2008 Service Pack 1 (SP1) 開始,您也可以使用 Word 2007 應用程式層級的增益集,在執行階段將內容控制項加入至任何開啟的文件。
本主題將說明下列工作:
在設計階段加入內容控制項
在文件層級專案中,於執行階段加入內容控制項
在應用程式層級專案中,於執行階段加入內容控制項
如需內容控制項的詳細資訊,請參閱內容控制項。
在設計階段加入內容控制項
在文件層級專案中,有數個方式可於設計階段將控制項加入至文件:
從 [工具箱] 的 [Word 控制項] 索引標籤加入內容控制項。
使用與在 Word 中加入原生 (Native) 內容控制項相同的方式,將內容控制項加入至文件。
從 [資料來源] 視窗將內容控制項拖曳至文件。這在您要於控制項建立的同時將控制項繫結至資料時相當有用。如需詳細資訊,請參閱 HOW TO:將物件的資料填入文件和HOW TO:將資料庫的資料填入文件。
注意事項: |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要使用工具箱將內容控制項加入至文件
在裝載於 Visual Studio 設計工具的文件中,將游標放在您要加入內容控制項的位置,或選取您要用內容控制項取代的文字。
開啟 [工具箱],然後按一下 [Word 控制項] 索引標籤。
以下列其中一種方式,加入控制項:
按兩下 [工具箱] 中的內容控制項。
-或-
按一下 [工具箱] 中的內容控制項,然後按下 ENTER 鍵。
-或-
將內容控制項從 [工具箱] 拖曳至文件。內容控制項會加入至文件中的目前選取位置,而不是滑鼠游標的位置。
注意事項: |
---|
您無法使用 [工具箱] 加入 GroupContentControl。您只能在 Word 中或在執行階段時加入 GroupContentControl。 |
若要在 Word 中將內容控制項加入至文件
在裝載於 Visual Studio 設計工具的文件中,將游標放在您要加入內容控制項的位置,或選取您要用內容控制項取代的文字。
按一下 [功能區] 上的 [開發人員] 索引標籤。
注意事項: 如果 [開發人員] 索引標籤沒有顯示,您必須先使其顯示。如需詳細資訊,請參閱 HOW TO:在功能區顯示開發人員索引標籤。
按一下 [控制項] 群組中代表所要加入內容控制項的圖示。
在文件層級專案中,於執行階段加入內容控制項
您可以在專案中使用 ThisDocument 類別之 Controls 屬性的方法,在執行階段以程式設計的方式將內容控制項加入至文件。每個方法都有三個多載,可供您以下列方式加入內容控制項:
在目前選取位置加入控制項。
在指定的範圍加入控制項。
加入以文件中的原生內容控制項為基礎的控制項。
當文件關閉時,動態建立的 Visual Studio Tools for Office 內容控制項不會保存在文件中。不過,原生內容控制項會保留在文件中。下次文件開啟時,您可以重新建立以原生內容控制項為基礎的 Visual Studio Tools for Office 內容控制項。如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件。
若要在目前選取位置加入內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有單一參數來代表新控制項名稱的 ControlCollection 方法。
下列程式碼範例會使用 ControlCollection.AddRichTextContentControl(String) 方法,將新的 RichTextContentControl 加入至文件的開頭。若要執行這個程式碼,請將程式碼加入至專案的 ThisDocument 類別中,並從 ThisDocument_Startup 事件處理常式呼叫 AddRichTextControlAtSelection 方法。
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Me.Paragraphs(1).Range.InsertParagraphBefore() Me.Paragraphs(1).Range.Select() richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { this.Paragraphs[1].Range.InsertParagraphBefore(); this.Paragraphs[1].Range.Select(); richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
若要在指定的範圍加入內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有 Microsoft.Office.Interop.Word.Range 參數的 ControlCollection 方法。
下列程式碼範例會使用 ControlCollection.AddRichTextContentControl(Range, String) 方法,將新的 RichTextContentControl 加入至文件的開頭。若要執行這個程式碼,請將程式碼加入至專案的 ThisDocument 類別中,並從 ThisDocument_Startup 事件處理常式呼叫 AddRichTextControlAtRange 方法。
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Me.Paragraphs(1).Range.InsertParagraphBefore() richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _ "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { this.Paragraphs[1].Range.InsertParagraphBefore(); richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
若要加入以原生內容控制項為基礎的內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有 Microsoft.Office.Interop.Word.ContentControl 參數的 ControlCollection 方法。
下列程式碼範例會針對文件中的每個原生 Rich Text 控制項,使用 ControlCollection.AddRichTextContentControl(ContentControl, String) 方法建立新的 RichTextContentControl。若要執行這個程式碼,請將程式碼加入至專案的 ThisDocument 類別中,並從 ThisDocument_Startup 事件處理常式呼叫 CreateRichTextControlsFromNativeControls 方法。
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub CreateRichTextControlsFromNativeControls() If Me.ContentControls.Count <= 0 Then Return End If Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Me.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ Me.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void CreateRichTextControlsFromNativeControls() { if (this.ContentControls.Count <= 0) return; richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in this.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = this.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } }
在應用程式層級專案中,於執行階段加入內容控制項
從 SP1 開始,您可以使用應用程式層級的增益集,在執行階段以程式設計的方式將內容控制項加入至任何開啟的文件。若要這麼做,請產生以開啟文件為基礎的 Document 主項目,然後使用這個主項目之 Controls 屬性的方法。每個方法都有三個多載,可供您以下列方式加入內容控制項:
在目前選取位置加入控制項。
在指定的範圍加入控制項。
加入以文件中的原生內容控制項為基礎的控制項。
當文件關閉時,動態建立的 Visual Studio Tools for Office 內容控制項不會保存在文件中。不過,原生內容控制項會保留在文件中。下次文件開啟時,您可以重新建立以原生內容控制項為基礎的 Visual Studio Tools for Office 內容控制項。如需詳細資訊,請參閱在 Office 文件中保存動態控制項。
如需在應用程式層級專案中產生主項目的詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿。
若要在目前選取位置加入內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有單一參數來代表新控制項名稱的 ControlCollection 方法。
下列程式碼範例會使用 ControlCollection.AddRichTextContentControl(String) 方法,將新的 RichTextContentControl 加入至使用中文件的開頭。若要執行這個程式碼,請將程式碼加入至專案的 ThisAddIn 類別中,並從 ThisAddIn_Startup 事件處理常式呼叫 AddRichTextControlAtSelection 方法。
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() currentDocument.Paragraphs(1).Range.Select() Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); currentDocument.Paragraphs[1].Range.Select(); Document extendedDocument = currentDocument.GetVstoObject(); richTextControl1 = extendedDocument.Controls.AddRichTextContentControl( "richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
若要在指定的範圍加入內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有 Microsoft.Office.Interop.Word.Range 參數的 ControlCollection 方法。
下列程式碼範例會使用 ControlCollection.AddRichTextContentControl(Range, String) 方法,將新的 RichTextContentControl 加入至使用中文件的開頭。若要執行這個程式碼,請將程式碼加入至專案的 ThisAddIn 類別中,並從 ThisAddIn_Startup 事件處理常式呼叫 AddRichTextControlAtRange 方法。
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() Dim extendedDocument As Document = currentDocument.GetVstoObject() richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _ extendedDocument.Paragraphs(1).Range, "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); Document extendedDocument = currentDocument.GetVstoObject(); richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
若要加入以原生內容控制項為基礎的內容控制項
使用名為 Add<control class> (其中 control class 是您要加入的內容控制項類別名稱,如 AddRichTextContentControl),且具有 Microsoft.Office.Interop.Word.ContentControl 參數的 ControlCollection 方法。
下列範例程式碼會使用 ControlCollection.AddRichTextContentControl(ContentControl, String) 方法,在文件開啟之後,對文件中每一個原生 Rich Text 控制項建立新的 RichTextContentControl。若要使用這個程式碼,請將程式碼加入至專案中的 ThisAddIn 類別。
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _ Handles Application.DocumentOpen If Doc.ContentControls.Count > 0 Then Dim extendedDocument As Document = Doc.GetVstoObject() Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Doc.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ extendedDocument.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End If End Sub
private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc) { if (Doc.ContentControls.Count > 0) { Document extendedDocument = Doc.GetVstoObject(); richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); int count = 0; foreach (Word.ContentControl nativeControl in Doc.ContentControls) { if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) { count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = extendedDocument.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); } } } }
若為 C#,您還必須將 Application_DocumentOpen 事件處理常式附加至 DocumentOpen 事件。
this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
請參閱
概念
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2008 年 7 月 |
加入應用程式層級增益集的程序。 |
SP1 功能變更。 |