逐步解說:使用選項按鈕更新文件中的圖表
更新:2007 年 11 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 專案類型
Microsoft Office 版本
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
本逐步解說示範如何在 Microsoft Office Word 的文件層級自訂中使用選項按鈕,讓使用者選擇圖表樣式。
這個逐步解說將說明下列工作:
在設計階段,透過文件層級專案將圖表加入至文件。
將選項按鈕加入至使用者控制項,使選項按鈕形成群組。
在選取某個選項時變更圖表樣式。
若要查看完成範例的結果,請參閱 Word 控制項的範例。
注意事項: |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
Visual Studio Tools for Office (Visual Studio 2008 Professional 和 Visual Studio Team System 的選擇性元件)。
Microsoft Office Word 2003 或 Microsoft Office Word 2007。
這個逐步解說使用 Word 2003 中的功能表,但是 Word 2007 功能區中也有相同的選項。
建立專案
第一步就是建立 Word 文件專案。
若要建立新的專案
建立名為 My Chart Options 的 Word 文件專案。選取精靈中的 [建立新文件]。如需詳細資訊,請參閱 HOW TO:建立 Visual Studio Tools for Office 專案。
Visual Studio 會在設計工具中開啟新的 Word 文件,並將 [My Chart Options] 專案加入至 [方案總管]。
將圖表加入至文件
在 Word 2003 專案中,Visual Studio 工具列的 [插入] 功能表會包含用來加入圖表的 Word 命令。
若要加入圖表
在 [插入] 功能表上,按一下 [物件]。
[物件] 對話方塊隨即開啟。
注意事項: 如果無法看到 [插入] 功能表,您必須先在文件內部按一下,使其成為焦點。如需詳細資訊,請參閱在 Visual Studio 環境下的 Office 功能表。
在 [建立新物件] 索引標籤的 [物件類型] 清單上,選取 [Microsoft Graph 圖表],然後按一下 [確定]。
圖表會加入至文件上插入點的位置,並且顯示附帶預設資料的 [資料工作表] 視窗。
關閉 [資料工作表] 視窗以接受圖表中的預設值,然後在文件內按一下,將焦點移離圖表。
以滑鼠右鍵按一下圖表,然後按一下 [格式化物件]。
在 [格式化物件] 對話方塊的 [配置] 索引標籤中,選取 [方形],然後按一下 [確定]。
將使用者控制項加入至專案
文件上的選項按鈕預設不會互斥。您可以將它們加入至使用者控制項,然後撰寫程式碼控制選取範圍,讓它們正確運作。
若要加入使用者控制項
在 [方案總管] 中,選取 [My Chart Options] 專案。
在 [專案] 功能表上,按一下 [加入新項目]。
在 [加入新項目] 對話方塊中,按一下 [使用者控制項],將控制項命名為 ChartOptions,然後按一下 [加入]。
若要將 Windows Form 控制項加入至使用者控制項
如果在設計工具中看不到使用者控制項,請按兩下 [方案總管] 中的 [ChartOptions]。
從 [工具箱] 的 [通用控制項] 索引標籤,將第一個 [選項按鈕] 控制項拖曳至使用者控制項,並變更下列屬性。
屬性
值
Name
columnChart
Text
Column Chart
將第二個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
barChart
Text
Bar Chart
將第三個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
lineChart
Text
Line Chart
將第四個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
areaBlockChart
Text
Area Block Chart
加入參考
若要從文件上的使用者控制項存取圖表,在專案中必須具有到 Microsoft Graph 11.0 物件程式庫的參考。
若要加入參考至 Microsoft Graph 11.0 物件程式庫
在 [專案] 功能表上,按一下 [加入參考]。
[加入參考] 對話方塊隨即出現。
按一下 [COM] 索引標籤。
在 [元件名稱] 清單中選取 [Microsoft Graph 11.0 Object Library],然後按一下 [確定]。
在選取某個選項按鈕時變更圖表樣式
若要讓按鈕正確運作,請在使用者控制項上建立公用 (Public) 事件、加入屬性以設定選取類型,並針對每個選項按鈕的 CheckedChanged 事件建立程序。
若要在使用者控制項上建立事件和屬性
以滑鼠右鍵按一下 [方案總管] 中的使用者控制項,然後按一下 [檢視程式碼]。
在 ChartOptions 類別 (Class) 中,加入建立 SelectionChanged 事件和 Selection 屬性的程式碼。
Public Event SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Private selectedType As Microsoft.Office.Interop.Graph.XlChartType = _ Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered Public Property Selection() As Microsoft.Office.Interop.Graph.XlChartType Get Return Me.selectedType End Get Set(ByVal value As Microsoft.Office.Interop.Graph.XlChartType) Me.selectedType = value End Set End Property
public event EventHandler SelectionChanged; private Microsoft.Office.Interop.Graph.XlChartType selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered; public Microsoft.Office.Interop.Graph.XlChartType Selection { get { return this.selectedType; } set { this.selectedType = value; } }
若要處理選項按鈕的 CheckedChange 事件
設定 areaBlockChart 選項按鈕之 CheckedChanged 事件處理常式中的圖表類型,然後引發事件。
Private Sub areaBlockChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles areaBlockChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void areaBlockChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
設定 barChart 選項按鈕之 CheckedChanged 事件處理常式中的圖表類型。
Private Sub barChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles barChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void barChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
設定 columnChart 選項按鈕之 CheckedChanged 事件處理常式中的圖表類型。
Private Sub columnChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles columnChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void columnChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
設定 lineChart 選項按鈕之 CheckedChanged 事件處理常式中的圖表類型。
Private Sub lineChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles lineChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void lineChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
在 C# 中,您必須加入選項按鈕的事件處理常式。您可以在 ChartOptions 建構函式 (Constructor) 中 (在 InitializeComponent 呼叫之下) 加入這個程式碼。如需建立事件處理常式的詳細資訊,請參閱 HOW TO:在 Visual Studio Tools for Office 中建立事件處理常式。
public ChartOptions() { InitializeComponent(); areaBlockChart.CheckedChanged += new EventHandler(areaBlockChart_CheckedChanged); barChart.CheckedChanged += new EventHandler(barChart_CheckedChanged); columnChart.CheckedChanged += new EventHandler(columnChart_CheckedChanged); lineChart.CheckedChanged += new EventHandler(lineChart_CheckedChanged); }
將使用者控制項加入至文件
當建置方案時,新的使用者控制項會自動加入至 [工具箱]。然後您可以從 [工具箱] 將控制項拖曳至文件。
若要將使用者控制項加入文件
在 [建置] 功能表上,按一下 [建置方案]。
[ChartOptions] 使用者控制項即會加入至 [工具箱]。
以滑鼠右鍵按一下 [方案總管] 中的 [ThisDocument.vb] 或 [ThisDocument.cs],然後按一下 [設計工具檢視]。
將 ChartOptions 控制項從 [工具箱] 拖曳至文件。
名為 ChartOptions1 的新控制項即會加入至您的專案。
變更圖表類型
建立會根據使用者控制項中選取的選項,變更圖表類型的事件處理常式。
若要變更文件中顯示之圖表的類型
將下列事件處理常式加入至 ThisDocument 類別。
Private Sub ChartOptions1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles ChartOptions1.SelectionChanged Try 'first object is the runtime storage control Dim index As Object = 2 Dim shape As Word.Shape = Me.Shapes.Item(index) 'Activate the shape shape.Activate() Dim dataChart As Graph.Chart = CType(shape.OLEFormat.Object, Graph.Chart) dataChart.ChartType = Me.ChartOptions1.Selection 'Deactivate the shape Me.ChartOptions1.Select() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
private void ChartOptions1_SelectionChanged(object sender, EventArgs e) { try { //first object is the runtime storage control object index = 2; Word.Shape shape = this.Shapes.get_Item(ref index); //Activate the shape shape.Activate(); Microsoft.Office.Interop.Graph.Chart dataChart = (Microsoft.Office.Interop.Graph.Chart)shape.OLEFormat.Object; dataChart.ChartType = this.ChartOptions1.Selection; //Deactivate the shape this.ChartOptions1.Select(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
在 C# 中,您必須在 Startup 事件中加入使用者控制項的事件處理常式。
this.ChartOptions1.SelectionChanged += new EventHandler(ChartOptions1_SelectionChanged);
測試應用程式
您現在可以測試文件,確認當選取某個選項按鈕時,圖表樣式會正確地更新。
若要測試您的文件
請按 F5 執行您的專案。
選取各種選項按鈕。
請確認圖表樣式的變更是否符合選取的選項。
後續步驟
以下則是接下來的一些工作:
使用按鈕填入文字方塊。如需詳細資訊,請參閱逐步解說:使用按鈕在文件的文字方塊中顯示文字。
從下拉式方塊中選取某個樣式以變更格式。如需詳細資訊,請參閱逐步解說:使用 CheckBox 控制項來變更文件格式。
請參閱
概念
Office 文件上的 Windows Form 控制項限制