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

本演练演示如何从 Microsoft Office Excel 文档级自定义项打开 Windows 窗体、从用户处收集信息并将这些信息写入工作表单元格。

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

虽然本演练具体使用的是 Excel 文档级项目,但其中所阐释的概念同样适用于其他 Office 项目。

先决条件

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

注意

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

创建新项目

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

创建新项目

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

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

向工作表添加 NamedRange 控件

将命名范围添加到 Sheet1

  1. 上选择 A1 Sheet1

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

    “名称”框位于公式栏的左侧,工作表 A 列的正上方。

  3. Enter

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

将 Windows 窗体添加到项目

创建 Windows 窗体以向用户提供信息提示。

添加 Windows 窗体

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

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

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

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

  4. 向窗体添加 TextBoxButton

  5. 选择按钮,在“属性” 窗口找到属性“Text” ,将文本更改为“OK”

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

显示 Windows 窗体并收集信息

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

显示窗体和收集信息

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

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

    注意

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

    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 A1 formInput单元格上的 控件

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

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

将信息发送到工作表

将信息发送到工作表

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

  2. 双击按钮以打开添加了 Click 事件处理程序的代码文件。

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

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

测试

现在可以运行该项目了。 Windows 窗体显示,你的输入将在工作表中显示。

测试工作簿

  1. F5 运行项目。

  2. 确认 Windows 窗体显示。

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

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

后续步骤

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

  • 在 Excel 工作簿或 Word 文档中使用 Windows 窗体控件。 有关详细信息,请参阅有关办公室文档概述的Windows 窗体控件。

  • 从文档级自定义或 VSTO 外接程序修改Microsoft 办公室应用程序的用户界面。 有关详细信息,请参阅办公室 UI 自定义