演练:使用 Windows 窗体收集数据
此演练将演示如何从 Microsoft Office Excel 文档级自定义项中打开 Windows 窗体,收集来自用户的信息并将这些信息写入工作表单元格。
**适用于:**本主题中的信息适用于 Office 2013 和 Office 2010 的文档级项目和应用程序级项目。请参见按 Office 应用程序和项目类型提供的功能。
尽管此演练专门使用 Excel 文档级项目,但由该演练演示的概念同样适用于其他 Office 项目。
系统必备
您需要以下组件来完成本演练:
-
Visual Studio 2012 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.110\).md)。
- Excel 2013 或 Excel 2010。
说明 |
---|
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见Visual Studio 设置。 |
创建新项目
第一步是要创建一个 Excel 工作簿项目。
创建新项目
创建一个名为“WinFormInput”的 Excel 工作簿项目,并在向导中选择**“创建新文档”**。有关更多信息,请参见如何:在 Visual Studio 中创建 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 事件中所示。有关创建事件处理程序的信息,请参见如何:在 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 自定义。