演练:使用 Windows 窗体收集数据
更新:2007 年 11 月
此演练将演示如何从 Microsoft Office Excel 文档级自定义项中打开 Windows 窗体,收集来自用户的信息并将这些信息写入工作表单元格。
尽管此演练专门使用 Excel 文档级项目,但由该演练演示的概念同样适用于其他 Visual Studio Tools for Office 项目。
先决条件
您需要以下组件来完成本演练:
Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。
Microsoft Office Excel 2003 或 Microsoft Office Excel 2007。
默认情况下,Visual Studio Tools for Office 随列出的 Visual Studio 版本一起安装。若要检查它是否已安装,请参见安装 Visual Studio Tools for Office。
说明: |
---|
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置。 |
创建新项目
第一步是要创建一个 Excel 工作簿项目。
创建新项目
创建一个名为 WinFormInput 的 Excel 工作簿项目,并在向导中选择“创建新文档”。有关更多信息,请参见 如何:创建 Visual Studio Tools for Office 项目。
Visual Studio 将在设计器中打开新的 Excel 工作簿,并将“WinFormInput”项目添加到“解决方案资源管理器”中。
将 NamedRange 控件添加到工作表
将一个指定范围添加到 Sheet1 中
选择 Sheet1 中的单元格“A1”。
在“名称”框中,键入“formInput”。
“名称框”位于编辑栏左侧,就在工作表的“A”列的上方。
按 Enter。
NamedRange 控件被添加到单元格“A1”中。选中单元格“A1”后,工作表中没有明显的指示,但“formInput”会显示在“名称”框(正好在左侧工作表的上面)和“属性”窗口中。
将 Windows 窗体添加到项目中
创建一个提示用户输入信息的 Windows 窗体。
添加 Windows 窗体
在“解决方案资源管理器”中选择“WinFormInput”项目。
在“项目”菜单上单击“添加 Windows 窗体”。
将窗体命名为 GetInputString.vb 或 GetInputString.cs,然后单击“添加”。
新窗体在设计器中随即打开。
选择该按钮,在“属性”窗口中找到“Text”属性,将文本更改为“确定”。
接下来,在 ThisWorkbook.vb 或 ThisWorkbook.cs 中添加用于收集用户信息的代码。
显示 Windows 窗体并收集信息
创建并显示 GetInputString Windows 窗体的一个实例,然后将用户的信息写入到工作表的某个单元格中。
显示窗体并收集信息
在“解决方案资源管理器”中右击“ThisWorkbook.vb”或“ThisWorkbook.cs”,然后单击“查看代码”。
在 ThisWorkbook 的 Open 事件处理程序中,添加下列代码以声明 GetInputString 窗体的一个变量,然后显示该窗体。
说明: 在 C# 中,必须添加一个事件处理程序,如下面的 Startup 事件中所示。有关创建事件处理程序的信息,请参见如何:使用 Visual Studio Tools for Office 创建事件处理程序。
Private Sub ThisWorkbook_Open() Handles Me.Open Dim inputForm As New GetInputString() inputForm.Show() End Sub
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open); } private void ThisWorkbook_Open() { GetInputString inputForm = new GetInputString(); inputForm.Show(); }
创建一个名为 WriteStringToCell 的方法,此方法用于将文本写到一个指定的范围内。将从窗体中调用此方法,并且用户的输入将传递到单元格“A1”上的 NamedRange 控件 formInput。
Public Sub WriteStringToCell(ByVal formData As String) Globals.Sheet1.formInput.Value2 = formData End Sub
public void WriteStringToCell(string formData) { Globals.Sheet1.formInput.Value2 = formData; }
接下来,向窗体中添加用于处理按钮的单击事件的代码。
将信息发送到工作表
将信息发送到工作表
在“解决方案资源管理器”中右击“GetInputString”,然后单击“视图设计器”。
双击该按钮以打开代码文件,按钮的 Click 事件处理程序也随之添加。
向事件处理程序添加代码以从文本框中提取输入内容,将其发送到函数 WriteStringToCell,然后关闭窗体。
Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose()
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose();
测试
现在可以运行项目。Windows 窗体将出现,并且您输入的内容将出现在工作表中。
测试工作簿
按 F5 运行项目。
确认 Windows 窗体显示。
在文本框中键入“Hello World”,然后单击“确定”。
确认“Hello World”显示在工作表的单元格“A1”中。
后续步骤
此演练介绍了显示 Windows 窗体并向工作表传递数据的基本操作。可能需要执行的其他任务包括:
在 Excel 工作簿或 Word 文档上使用 Windows 窗体控件。有关更多信息,请参见 Office 文档上的 Windows 窗体控件概述。
从文档级自定义项或应用程序级外接程序中修改 Microsoft Office 应用程序的用户界面。有关更多信息,请参见 Office UI 自定义。