演练:使用单选按钮更新文档中的图表
此演练演示如何使用 Microsoft Office Word 文档级自定义项中的单选按钮,为用户提供在文档中选择图表样式的选项。
**适用于:**本主题中的信息适用于 Word 2007 和 Word 2010 的文档级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
本演练阐释了以下任务:
在文档级项目中,在设计时向文档中添加图表。
通过将单选按钮添加到用户控件来对它们进行分组。
在选择某个选项时更改图表样式。
若要查看完整示例,请参见 Office 开发示例和演练中的 Word 控件示例。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
系统必备
您需要以下组件来完成本演练:
-
Visual Studio 2010 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.100\).md)。
- Word 2007 或 Word 2010。
创建项目
第一步是创建 Word 文档项目。
创建新项目
创建一个名为“我的图表选项”的 Word 文档项目。 在向导中,选择**“创建新文档”**。 有关更多信息,请参见如何:在 Visual Studio 中创建 Office 项目。
Visual Studio 将在设计器中打开新的 Word 文档并将**“我的图表选项”项目添加到“解决方案资源管理器”**中。
向文档中添加图表
添加图表
在承载于 Visual Studio 设计器中的 Word 文档中,单击功能区上的**“插入”**选项卡。
在**“文本”组中,单击“插入对象”下拉按钮,然后单击“对象”**。
随即打开**“对象”**对话框。
在**“新建”选项卡上的“对象类型”列表中选择“Microsoft Graph 图表**”,然后单击**“确定”**。
此时将在文档中的插入点处添加一个图表,并且**“数据表”**窗口出现,其中会显示一些默认数据。
关闭**“数据表”**窗口使图表接受默认值,然后单击文档内部将焦点从图表移开。
右击图表,然后单击**“设置对象格式”**。
在**“设置对象格式”对话框的“布局”选项卡上,选择“正方形”,然后单击“确定”**。
向项目中添加用户控件
文档上的单选按钮默认情况下不互相排斥。 通过将这些按钮添加到用户控件中,然后编写代码来控制所选内容,可使这些按钮正常工作。
添加用户控件
在**“解决方案资源管理器”中选择“我的图表选项”**项目。
在**“项目”菜单上,单击“添加新项”**。
在**“添加新项”对话框中单击“用户控件”,将控件命名为“ChartOptions”,然后单击“添加”**。
向用户控件中添加 Windows 窗体控件
如果用户控件在设计器中不可见,请在**“解决方案资源管理器”中双击“图表选项”**。
从**“工具箱”的“公共控件”选项卡中,将第一个“单选按钮”**控件拖到该用户控件,然后更改以下属性。
Property
值
名称
columnChart
Text
柱形图
向用户控件添加第二个**“单选按钮”**,并更改以下属性。
Property
值
名称
barChart
Text
条形图
向用户控件添加第三个**“单选按钮”**,并更改以下属性。
Property
值
名称
lineChart
Text
折线图
向用户控件添加第四个**“单选按钮”**,并更改以下属性。
Property
值
名称
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 版。
当某一单选按钮处于选定状态时更改图表样式
若要使这些按钮正常工作,请创建用户控件的公共事件,添加属性以设置选择类型,并为每个单选按钮的 CheckedChanged 事件创建过程。
创建用户控件的事件和属性
在**“解决方案资源管理器”中右击用户控件,然后单击“查看代码”**。
向 ChartOptions 类添加代码以创建 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 构造函数中的 InitializeComponent 调用的下面。 有关创建事件处理程序的信息,请参见如何:在 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 控件更改文档格式设置。