演练:使用单选按钮更新文档中的图表
更新: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 专业版 和 Visual Studio Team System 的可选组件)。
Microsoft Office Word 2003 或 Microsoft Office Word 2007。
此演练使用 Word 2003 中的菜单,但是也可以在 Word 2007 功能区中使用同样的选项。
创建项目
第一步是创建 Word 文档项目。
创建新项目
创建一个名为“我的图表选项”的 Word 文档项目。在向导中,选择“创建新文档”。有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目。
Visual Studio 将在设计器中打开新的 Word 文档并将“我的图表选项”项目添加到“解决方案资源管理器”中。
向文档中添加图表
在 Word 2003 项目中,Visual Studio 工具栏上的“插入”菜单包含用来添加图表的 Word 命令。
添加图表
在“插入”菜单上单击“对象”。
随即打开“对象”对话框。
说明:
如果“插入”菜单不可见,则必须先单击文档内部使其获得焦点。有关更多信息,请参见Visual Studio 环境中的 Office 菜单。
在“新建”选项卡上的“对象类型”列表中选择“Microsoft Graph 图表”,然后单击“确定”。
此时将在文档中的插入点处添加一个图表,并且“数据表”窗口出现,其中会显示一些默认数据。
关闭“数据表”窗口使图表接受默认值,然后单击文档内部将焦点从图表移开。
右击图表,然后单击“设置对象格式”。
在“设置对象格式”对话框的“布局”选项卡上,选择“正方形”,然后单击“确定”。
向项目中添加用户控件
文档上的单选按钮默认情况下不互相排斥。通过将这些按钮添加到用户控件中,然后编写代码来控制所选内容,可使这些按钮正常工作。
添加用户控件
在“解决方案资源管理器”中选择“我的图表选项”项目。
在“项目”菜单上单击“添加新项”。
在“添加新项”对话框中单击“用户控件”,将控件命名为“ChartOptions”,然后单击“添加”。
向用户控件中添加 Windows 窗体控件
如果用户控件在设计器中不可见,请在“解决方案资源管理器”中双击“图表选项”。
从“工具箱”的“公共控件”选项卡中,将第一个“单选按钮”控件拖到该用户控件,然后更改以下属性。
属性
值
Name
columnChart
Text
柱形图
向用户控件添加第二个“单选按钮”,并更改以下属性。
属性
值
Name
barChart
Text
条形图
向用户控件添加第三个“单选按钮”,并更改以下属性。
属性
值
Name
lineChart
Text
折线图
向用户控件添加第四个“单选按钮”,并更改以下属性。
属性
值
Name
areaBlockChart
Text
面积图
添加引用
若要从文档上的用户控件访问图表,则必须在项目中引用 Microsoft Graph 11.0 对象库。
添加对 Microsoft Graph 11.0 对象库的引用
在“项目”菜单上单击“添加引用”。
将出现“添加引用”对话框。
单击“COM”选项卡。
在“组件名称”列表中选择“Microsoft Graph 11.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 调用的下面。有关创建事件处理程序的信息,请参见如何:使用 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 控件更改文档格式设置。