该 BindingNavigator 控件是一种专用 ToolStrip 控件,用于导航和操作绑定到数据的窗体上的控件。
由于它是一个 ToolStrip 控件,BindingNavigator 组件因此可以轻松修改,包括用户的额外命令或替代命令。
在以下过程中,TextBox 控件被绑定到数据上,而添加到窗体中的 ToolStrip 控件被修改,以便包括加载、保存和取消按钮。
将加载、保存和取消按钮添加到 BindingNavigator 组件
在 Visual Studio 中,向窗体添加控件 TextBox 。
将其绑定到一个BindingSource,该BindingSource已经绑定到数据源。 对于此示例,BindingSource 被绑定到一个数据库。
生成数据集和表适配器后,将 BindingNavigator 控件拖动到窗体。
将 BindingNavigator 控件的 BindingSource 属性设置为绑定到该控件的窗体上的 BindingSource。
选择 BindingNavigator 控件。
单击设计器操作符号(
),以便显示绑定导航器任务对话框,然后选择编辑项。
此时会显示 “项集合编辑器 ”。
在 项集合编辑器中,完成以下内容:
通过选择适当的ToolStripItem类型并单击“添加”按钮来添加一个ToolStripSeparator项目和三个ToolStripButton项目。
将 Name 按钮的属性分别设置为 LoadButton、 SaveButton 和 CancelButton。
将 Text 按钮的属性设置为 “加载”、“ 保存”和 “取消”。
将 DisplayStyle 每个按钮的属性设置为 “文本”。 或者,可以将此属性设置为 Image 或 ImageAndText,并将图像设置为显示在属性中 Image 。
单击 “确定” 关闭对话框。 按钮被添加到 ToolStrip。
右键单击窗体并选择“查看代码”。
在代码编辑器中,找到将数据加载到表适配器中的代码行。 在步骤 2 中设置数据绑定时,会生成此代码。 代码应如下所示:
TableAdapterName.Fill(DataSetName.TableName)
它很可能出现在表单的Load事件中。为 Click 之前创建的 加载ToolStripButton 事件创建事件处理程序,并将此数据加载代码移动到其中。
现在,代码应类似于如下内容:
Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadButton.Click TableAdapterName.Fill(DataSetName.TableName) End Sub
private void LoadButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Fill(DataSetName.TableName); }
为 Click 之前创建的 “保存ToolStripButton ”事件创建事件处理程序,并编写代码以更新控件绑定到的表中的数据。
Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click TableAdapterName.Update(DataSetName.TableName) End Sub
private void SaveButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Update(DataSetName.TableName); }
注释
在某些情况下, BindingNavigator 组件已具有 “保存 ”按钮,但 Windows 窗体设计器未生成任何代码。 在这种情况下,可以将上述代码放在该按钮的事件处理程序中 Click ,而不是在该 ToolStrip按钮上创建一个全新的按钮。 但是,该按钮默认处于禁用状态,因此必须将按钮
true
的属性设置为Enabled使按钮功能正确。为 Click 之前创建的 “取消”ToolStripButton 事件创建事件处理程序,并编写代码以取消对显示的数据记录所做的任何更改。
Private Sub CancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click BindingSourceName.CancelEdit() End Sub
private void CancelButton_Click(System.Object sender, System.EventArgs e) { BindingSourceName.CancelEdit(); }
注释
该方法 CancelEdit 的范围限定为数据行。 在导航到下一条记录之前,保存查看该记录时所做的任何更改。