如何:向 Windows 窗体 BindingNavigator 控件添加“加载”、“保存”和“取消”按钮
更新:2007 年 11 月
BindingNavigator 控件是一个具有特殊用途的 ToolStrip 控件,用于定位和操作窗体上绑定到数据的控件。
由于 BindingNavigator 组件是一个 ToolStrip 控件,因此可以轻松对其进行修改,加入供用户使用的附加或替代命令。
在下面的过程中,我们将 TextBox 控件绑定到数据,并对 ToolStrip 控件进行修改,在其中包括“加载”、“保存”和“取消”按钮。
向 BindingNavigator 组件添加“加载”、“保存”和“取消”按钮
向窗体中添加一个 TextBox 控件。
将其绑定到一个 BindingSource,后者绑定到了一个数据源。在此例中,BindingSource 绑定到数据库。
生成数据集和表适配器后,向窗体中拖一个 BindingNavigator 控件。
将 BindingNavigator 控件的 BindingSource 属性设置为窗体上绑定到控件的 BindingSource。
选择 BindingNavigator 控件。
单击智能标记符号 (),“BindingNavigator 任务”对话框将出现,选择“编辑项”。
“项集合编辑器”出现。
在“项集合编辑器”中,完成下述操作:
通过选择相应类型的 ToolStripItem 并单击“添加”按钮来添加一个 ToolStripSeparator 和三个 ToolStripButton 项。
将按钮的 Name 属性分别设置为“LoadButton”、“SaveButton”和“CancelButton”。
将这些按钮的 Text 属性分别设置为“加载”、“保存”和“取消”。
将每个按钮的 DisplayStyle 属性设置为“Text”。也可将此属性设置为“Image”或“ImageAndText”,并设置要显示在 Image 属性中的图像。
单击“确定”关闭对话框。这些按钮将添加到 ToolStrip 上。
右击窗体并选择“查看代码”。
在“代码编辑器”中,找到将数据加载到表适配器的代码行。这些代码是在第 2 步设置数据绑定时生成的。代码形式如下:TableAdapterName.Fill(DataSetName.TableName)。此代码最有可能位于窗体的 Load 事件中。
为之前创建的“加载”ToolStripButton 的 Click 事件创建事件处理程序,并将此数据加载代码移入其中。
代码看起来应类似于以下形式:
[Visual Basic]
Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadButton.Click TableAdapterName.Fill(DataSetName.TableName) End Sub
[C#]
private void LoadButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Fill(DataSetName.TableName); }
为之前创建的“保存”ToolStripButton 的 Click 事件创建事件处理程序,并编写代码以更新该控件所绑定到的表中的数据。
[Visual Basic]
Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click TableAdapterName.Update(DataSetName.TableName) End Sub
[C#]
private void SaveButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Update(DataSetName.TableName); }
说明: 在某些情况下,BindingNavigator 组件会已有一个“保存”按钮,但 Windows 窗体设计器并没有生成代码。如果这样,可将前面的代码加入该按钮的 Click 事件处理程序中,而不是在 ToolStrip 上创建全新的按钮。不过,该按钮在默认情况下是禁用的,因此要使按钮正常工作,必须将其 Enabled 属性设置为 true。
为早先创建的“取消”ToolStripButton 的 Click 事件创建事件处理程序,并编写代码以取消对所显示数据记录所做的任何更改。
[Visual Basic]
Private Sub CancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click BindingSourceName.CancelEdit() End Sub
[C#]
private void CancelButton_Click(System.Object sender, System.EventArgs e) { BindingSourceName.CancelEdit(); }
说明: CancelEdit 方法按数据行起作用。在定位到下一记录前,保存您在查看该单一记录时所做的任何更改。