逐步解說:使用選項按鈕更新文件中的圖表
本逐步解說示範如何在 Microsoft Office Word 的文件層級自訂中使用選項按鈕,讓使用者選擇圖表樣式。
**適用於:**本主題中的資訊適用於 Word 2007 和 Word 2010 的文件層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
這個逐步解說將說明下列工作:
在設計階段,透過文件層級專案將圖表加入至文件。
將選項按鈕加入至使用者控制項,使選項按鈕形成群組。
在選取某個選項時變更圖表樣式。
若要查看完成範例的結果,請參閱 Office 程式開發範例和逐步解說中的<Word 控制項範例>。
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
-
包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。
- Word 2007 或 Word 2010。
建立專案
第一步就是建立 Word 文件專案。
若要建立新的專案
建立名為 My Chart Options 的 Word 文件專案。 選取精靈中的 [建立新文件]。 如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案。
Visual Studio 會在設計工具中開啟新的 Word 文件,並將 [My Chart Options] 專案加入至 [方案總管]。
將圖表加入至文件
若要加入圖表
在裝載於 Visual Studio 設計工具的 Word 文件中,按一下功能區上的 [插入] 索引標籤。
按一下 [文字] 群組中的 [插入物件] 下拉按鈕,然後按一下 [物件]。
[物件] 對話方塊隨即開啟。
在 [建立新物件] 索引標籤的 [物件類型] 清單上,選取 [Microsoft Graph 圖表],然後按一下 [確定]。
圖表會加入至文件上插入點的位置,並且顯示附帶預設資料的 [資料工作表] 視窗。
關閉 [資料工作表] 視窗以接受圖表中的預設值,然後在文件內按一下,將焦點移離圖表。
以滑鼠右鍵按一下圖表,然後按一下 [格式化物件]。
在 [格式化物件] 對話方塊的 [配置] 索引標籤中,選取 [方形],然後按一下 [確定]。
將使用者控制項加入至專案
文件上的選項按鈕預設不會互斥。 您可以將它們加入至使用者控制項,然後撰寫程式碼控制選取範圍,讓它們正確運作。
若要加入使用者控制項
在 [方案總管] 中,選取 [My Chart Options] 專案。
在 [專案] 功能表上,按一下 [加入新項目]。
在 [加入新項目] 對話方塊中,按一下 [使用者控制項],將控制項命名為 ChartOptions,然後按一下 [加入]。
若要將 Windows Form 控制項加入至使用者控制項
如果在設計工具中看不到使用者控制項,請按兩下 [方案總管] 中的 [ChartOptions]。
從 [工具箱] 的 [通用控制項] 索引標籤,將第一個 [選項按鈕] 控制項拖曳至使用者控制項,並變更下列屬性。
屬性
值
Name
columnChart
Text
直條圖
將第二個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
barChart
Text
橫條圖
將第三個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
lineChart
Text
折線圖
將第四個 [選項按鈕] 加入至使用者控制項,並變更下列屬性。
屬性
值
Name
areaBlockChart
Text
區域區塊圖
加入參考
若要從文件上的使用者控制項存取圖表,在專案中必須具有 Microsoft.Office.Interop.Graph 組件的參考。
若要加入 Microsoft.Office.Interop.Graph 組件的參考
在 [專案] 功能表上,按一下 [加入參考]。
[加入參考] 對話方塊隨即出現。
在 [.NET] 索引標籤上,選取 [Microsoft.Office.Interop.Graph],然後按一下 [確定]。 如果專案的目標為 Word 2007,請選取 12.0.0.0 版本的組件;如果專案的目標為 Word 2010,則請選取 14.0.0.0 版本。
在選取某個選項按鈕時變更圖表樣式
若要讓按鈕正確運作,請在使用者控制項上建立公用 (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:在 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 Dim shape As Word.Shape = Me.Shapes.Item(1) ' 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 { object index = 1; 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 控制項限制