演练:通过使用 Windows 窗体收集数据

本操作指南演示如何从 Microsoft Office Excel 的文档级自定义程序打开 Windows 窗体,收集用户信息,并将该信息写入工作表单元格。

适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅 Office 应用程序和项目类型提供的功能

尽管本演练专门使用 Excel 的文档级项目,但本演练演示的概念适用于其他 Office 项目。

先决条件

你需要满足以下条件才能完成本演练:

注释

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 Visual Studio IDE

创建新项目

第一步是创建 Excel 工作簿项目。

创建新项目

  1. 使用名称 WinFormInput 创建 Excel 工作簿项目,然后在向导中选择“ 创建新文档 ”。 有关详细信息,请参阅 如何:在 Visual Studio 中创建 Office 项目

    Visual Studio 将在设计器中打开新的 Excel 工作簿,并将 WinFormInput 项目添加到 解决方案资源管理器

向工作表添加 NamedRange 控件

向 Sheet1 添加命名区域

  1. 选择 Sheet1 中的单元格 A1

  2. “名称 ”框中,键入 formInput

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

  3. Enter

    控件 NamedRange 将添加到单元格 A1。 工作表上没有可见的指示,但 formInput 显示在“名称”框中(就在左侧的工作表上方)和选择单元格 A1 时在“属性”窗口中。

将 Windows 窗体添加到项目

创建 Windows 窗体以提示用户输入信息。

添加 Windows 窗口

  1. 解决方案资源管理器中选择项目 WinFormInput

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

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

    新窗体将在设计器中打开。

  4. 向表单添加TextBoxButton

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

    接下来,向ThisWorkbook.vbThisWorkbook.cs添加代码以收集用户信息。

显示 Windows 窗体并收集信息

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

显示表单并收集信息

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

  2. 在事件处理程序OpenThisWorkbook,添加以下代码来声明窗体GetInputString的变量,然后显示窗体。

    注释

    在 C# 中,必须添加事件处理程序,如下所示 Startup 。 有关创建事件处理程序的信息,请参阅 如何:在 Office 项目中创建事件处理程序

    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.ShowDialog();
    }
    
  3. 创建一个调用 WriteStringToCell 的方法,用于将文本写入命名区域。 此方法从窗体调用,并且用户的输入将被传递到控件NamedRange,该控件位于单元格formInput上。

    public void WriteStringToCell(string formData)
    {
        Globals.Sheet1.formInput.Value2 = formData;
    }
    

    接下来,将代码添加到窗体以处理按钮的单击事件。

将信息发送到工作表

向工作表发送信息

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

  2. 双击该按钮以打开含有按钮的 Click 事件处理程序的代码文件。

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

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

测试

现在可以运行项目。 此时会显示 Windows 窗体,输入将显示在工作表中。

测试工作簿

  1. F5 运行项目。

  2. 确认 Windows 窗体是否出现。

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

  4. 确认 Hello World 出现在工作表的 单元格 A1 中。

后续步骤

本演练演示了显示 Windows 窗体并将数据传递到工作表的基础知识。 你可能希望执行的其他任务包括: