演练:使用 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 中

  1. 选择 Sheet1 中的单元格**“A1”**。

  2. 在**“名称”**框中键入“formInput”。

    **“名称框”位于编辑栏左侧,就在工作表的“A”**列的上方。

  3. 按 Enter。

    NamedRange 控件被添加到单元格**“A1”中。选中单元格“A1”后,工作表中没有明显的指示,但“formInput”会显示在“名称”框(正好在左侧工作表的上面)和“属性”**窗口中。

将 Windows 窗体添加到项目中

创建一个提示用户输入信息的 Windows 窗体。

添加 Windows 窗体

  1. 在**“解决方案资源管理器”中选择“WinFormInput”**项目。

  2. 在**“项目”菜单上,单击“添加 Windows 窗体”**。

  3. 将窗体命名为 GetInputString.vb 或 GetInputString.cs,然后单击**“添加”**。

    新窗体在设计器中随即打开。

  4. 将一个 TextBoxButton 添加到窗体中。

  5. 选择该按钮,在**“属性”窗口中找到“Text”属性,将文本更改为“确定”**。

接下来,在 ThisWorkbook.vb 或 ThisWorkbook.cs 中添加用于收集用户信息的代码。

显示 Windows 窗体并收集信息

创建并显示 GetInputString Windows 窗体的一个实例,然后将用户的信息写入到工作表的某个单元格中。

显示窗体并收集信息

  1. 在**“解决方案资源管理器”中右击“ThisWorkbook.vb”“ThisWorkbook.cs”,然后单击“查看代码”**。

  2. 在 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();
    }
    
  3. 创建一个名为 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;
    }
    

接下来,向窗体中添加用于处理按钮的单击事件的代码。

将信息发送到工作表

将信息发送到工作表

  1. 在**“解决方案资源管理器”中右击“GetInputString”,然后单击“视图设计器”**。

  2. 双击该按钮以打开代码文件,按钮的 Click 事件处理程序也随之添加。

  3. 向事件处理程序添加代码以从文本框中提取输入内容,将其发送到函数 WriteStringToCell,然后关闭窗体。

    Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text)
    Me.Dispose()
    
    Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text);
    this.Dispose();
    

测试

现在可以运行项目。Windows 窗体将出现,并且您输入的内容将出现在工作表中。

测试工作簿

  1. 按 F5 运行项目。

  2. 确认 Windows 窗体显示。

  3. 在文本框中键入“Hello World”,然后单击**“确定”**。

  4. 确认“Hello World”显示在工作表的单元格**“A1”**中。

后续步骤

此演练介绍了显示 Windows 窗体并向工作表传递数据的基本操作。可能需要执行的其他任务包括:

请参见

概念

在 Office 解决方案中编写代码

使用 Word 的演练

使用 Excel 的演练

其他资源

开发 Office 解决方案

应用程序级外接程序编程

对文档级自定义项进行编程