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

f1wckde0.alert_note(zh-cn,VS.90).gif说明:

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置

创建新项目

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

创建新项目

  • 创建一个名为 WinFormInput 的 Excel 工作簿项目,并在向导中选择“创建新文档”。有关更多信息,请参见 如何:创建 Visual Studio Tools for 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 窗体的一个变量,然后显示该窗体。

    f1wckde0.alert_note(zh-cn,VS.90).gif说明:

    在 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();
    }
    
  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 窗体并向工作表传递数据的基本操作。可能需要执行的其他任务包括:

请参见

任务

如何:与 Windows 窗体进行交互

概念

开发 Office 解决方案

Office 解决方案编程模型

应用程序级外接程序编程

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

使用 Word 的演练

使用 Excel 的演练

Office 解决方案的全球化和本地化