演练:在 Windows 窗体间传递数据
发布日期: 2016年7月
本演练提供了有关将数据从一个窗体传递到另一个窗体的分步说明。 通过使用来自 Northwind 的客户和订单表,一个窗体将允许用户选择客户,而另一个窗体将显示所选择客户的订单。 本演练演示如何在窗体上创建从第一个窗体接收数据的方法。
备注
本演练仅演示在窗体之间传递数据的一种方法。 向窗体传递数据还可以有其他选择,包括以下方法:创建另一个构造函数来接收数据,或者创建一个可用第一个窗体的数据进行设置的公共属性。
本演练涉及以下任务:
创建新的**“Windows 应用程序”**项目。
使用数据源配置向导创建并配置数据集。
选择从**“数据源”**窗口拖动某些项时要在窗体上创建的控件。 有关详细信息,请参阅设置从“数据源”窗口中拖动时要创建的控件。
通过将某些项从**“数据源”**窗口拖到窗体上来创建数据绑定控件。
创建具有网格的第二个窗体来显示数据。
创建一个 TableAdapter 查询来获取特定客户的订单。
在窗体间传递数据。
系统必备
若要完成本演练,你需要:
- 能够访问 Northwind 示例数据库。 有关详细信息,请参阅如何:安装示例数据库。
创建 Windows 应用程序
创建新的 Windows 项目
从**“文件”**菜单创建一个新的项目。
将项目命名为
PassingDataBetweenForms
。选择**“Windows 窗体应用程序”,然后单击“确定”**。 有关详细信息,请参阅客户端应用程序。
**“PassingDataBetweenForms”项目即被创建并添加到“解决方案资源管理器”**中。
创建数据源
创建数据源
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,选择“添加新数据源”以启动“数据源配置向导”**。
在**“选择数据源类型”页上选择“数据库”,然后单击“下一步”**。
在**“选择数据库模型”页面上,确认已指定“数据集”,然后单击“下一步”**。
在**“选择数据连接”**页面上,执行以下操作之一:
如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。
- 或 -
选择**“新建连接”,以启动“添加/修改连接”**对话框。
如果数据库需要密码并且已启用用于包括敏感数据的选项,请选择该选项,然后单击**“下一步”**。
在**“将连接字符串保存到应用程序配置文件”页面上单击“下一步”**。
在**“选择数据库对象”页面上展开“表”**节点。
选择**“Customers”和“Orders”表,然后单击“完成”**。
**“NorthwindDataSet”将会添加到你的项目中,并且在“数据源”窗口中将显示“Customers”**和“Orders”表。
创建第一个窗体 (Form1)
通过将**“Customers”节点从“数据源”**窗口拖到窗体上,可以创建数据绑定网格(DataGridView 控件)。
在窗体上创建数据绑定网格
将主**“Customers”节点从“数据源”窗口拖到“Form1”**上。
在**“Form1”**上出现用于导航记录的 DataGridView 和工具栏 (BindingNavigator)。 组件栏中出现 NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator。
创建第二个窗体 (Form2)
创建要传入数据的第二个窗体
从**“项目”菜单中,选择“添加 Windows 窗体”**。
保留**“Form2”的默认名称,然后单击“添加”**。
将主**“Orders”节点从“数据源”窗口拖到“Form2”**上。
在**“Form2”**上出现用于导航记录的 DataGridView 和工具栏 (BindingNavigator)。 组件栏中出现 NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator。
从组件栏中删除**“OrdersBindingNavigator”**。
**“OrdersBindingNavigator”从“Form2”**中消失。
向 Form2 添加 TableAdapter 查询来为 Form1 上所选择的客户加载订单
创建 TableAdapter 查询
在**“解决方案资源管理器”中双击“NorthwindDataSet.xsd”**文件。
右键单击**“OrdersTableAdapter”,然后选择“添加查询”**。
保留**“使用 SQL 语句”的默认选项,然后单击“下一步”**。
保留**“选择(返回行)”的默认选项,然后单击“下一步”**。
向查询添加 WHERE 子句来根据
CustomerID
返回Orders
。 查询应当类似于:SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry FROM Orders WHERE CustomerID = @CustomerID
备注
验证数据库的参数语法是否正确。 例如,在 Microsoft Access 中,WHERE 子句应当如下:
WHERE CustomerID = ?
。单击**“下一步”**。
对于**“填充 DataTable”->“方法名称”**,键入
“FillByCustomerID”
。清除**“返回 DataTable”选项,然后单击“下一步”**。
单击**“完成”**。
在 Form2 上创建要传入数据的方法
创建要传入数据的方法
右键单击**“Form2”,然后选择“查看代码”,以在“代码编辑器”中打开“Form2”**。
将以下代码添加到
Form2_Load
方法后面的**“Form2”**:internal void LoadOrders(String CustomerID) { ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID); }
Friend Sub LoadOrders(ByVal CustomerID As String) OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID) End Sub
在 Form1 上创建用于传递数据并显示 Form2 的方法
创建向 Form2 传递数据的方法
在**“Form1”中,右键单击“Customer”数据网格,然后单击“属性”**。
在**“属性”窗口中,单击“事件”**。
双击**“CellDoubleClick”**事件。
将显示代码编辑器。
更新方法定义以匹配以下示例:
private void customersDataGridView_DoubleClick(object sender, EventArgs e) { System.Data.DataRowView SelectedRowView; NorthwindDataSet.CustomersRow SelectedRow; SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current; SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row; Form2 OrdersForm = new Form2(); OrdersForm.LoadOrders(SelectedRow.CustomerID); OrdersForm.Show(); }
Private Sub CustomersDataGridView_DoubleClick() Handles CustomersDataGridView.DoubleClick Dim SelectedRowView As Data.DataRowView Dim SelectedRow As NorthwindDataSet.CustomersRow SelectedRowView = CType(CustomersBindingSource.Current, System.Data.DataRowView) SelectedRow = CType(SelectedRowView.Row, NorthwindDataSet.CustomersRow) Dim OrdersForm As New Form2 OrdersForm.LoadOrders(SelectedRow.CustomerID) OrdersForm.Show() End Sub
运行应用程序
运行应用程序
按 F5 运行该应用程序。
在**“Form1”中双击一个客户记录以打开包含该客户的订单的“Form2”**。
后续步骤
根据应用程序的要求,在窗体间传递数据之后可能还需要执行一些步骤。 你可以通过以下操作来增强此演练的效果:
编辑数据集,以添加或移除数据库对象。 有关详细信息,请参阅如何:编辑数据集。
添加将数据保存回数据库的功能。 有关详细信息,请参阅如何:将数据集更改保存到数据库中。
请参阅
数据演练
在 Visual Studio 中将 Windows 窗体控件绑定到数据
数据源概述
TableAdapter 概述
连接到 Visual Studio 中的数据
准备应用程序以接收数据
将数据获取到应用程序
在 Visual Studio 中将控件绑定到数据
在应用程序中编辑数据
验证数据
保存数据