Como: Navegar nos dados com o controlo BindingNavigator do Windows Forms
O advento do controle de BindingNavigator no Windows Forms permite que os desenvolvedores forneçam aos usuários finais uma interface de usuário simples de navegação e manipulação de dados nos formulários que eles criam.
O controle BindingNavigator é um controle ToolStrip com botões pré-configurados para navegação para o primeiro, último, próximo e anterior registro em um conjunto de dados, bem como botões para adicionar e excluir registros. Adicionar botões ao controle BindingNavigator é fácil, porque é um controle ToolStrip. Para obter exemplos, consulte Como adicionar botões Carregar, Salvar e Cancelar ao controle do Windows Forms BindingNavigator.
Para cada botão no controle BindingNavigator, há um membro correspondente do componente BindingSource que permite programaticamente a mesma funcionalidade. Por exemplo, o botão MoveFirstItem corresponde ao método MoveFirst do componente BindingSource, o botão DeleteItem corresponde ao método RemoveCurrent e assim por diante. Como resultado, habilitar o controle BindingNavigator para navegar em registros de dados é tão simples quanto definir sua propriedade BindingSource para o componente BindingSource apropriado no formulário.
Para configurar o controle BindingNavigator
Adicione um componente BindingSource chamado
bindingSource1
e dois controles TextBox chamadostextBox1
etextBox2
.Associe
bindingSource1
a dados e os controles de caixa de texto abindingSource1
. Para fazer isso, cole o código a seguir no seu formulário e chameLoadData
do construtor do formulário ou do método de manipulação de eventos Load.private void LoadData() { // The xml to bind to. string xml = @"<US><states>" + @"<state><name>Washington</name><capital>Olympia</capital></state>" + @"<state><name>Oregon</name><capital>Salem</capital></state>" + @"<state><name>California</name><capital>Sacramento</capital></state>" + @"<state><name>Nevada</name><capital>Carson City</capital></state>" + @"</states></US>"; // Convert the xml string to bytes and load into a memory stream. byte[] xmlBytes = Encoding.UTF8.GetBytes(xml); MemoryStream stream = new MemoryStream(xmlBytes, false); // Create a DataSet and load the xml into it. DataSet set = new DataSet(); set.ReadXml(stream); // Set the DataSource to the DataSet, and the DataMember // to state. bindingSource1.DataSource = set; bindingSource1.DataMember = "state"; textBox1.DataBindings.Add("Text", bindingSource1, "name"); textBox2.DataBindings.Add("Text", bindingSource1, "capital"); }
Private Sub LoadData() ' The xml to bind to. Dim xml As String = "<US><states>" + "<state><name>Washington</name><capital>Olympia</capital></state>" + "<state><name>Oregon</name><capital>Salem</capital></state>" + "<state><name>California</name><capital>Sacramento</capital></state>" + "<state><name>Nevada</name><capital>Carson City</capital></state>" + "</states></US>" ' Convert the xml string to bytes and load into a memory stream. Dim xmlBytes As Byte() = Encoding.UTF8.GetBytes(xml) Dim stream As New MemoryStream(xmlBytes, False) ' Create a DataSet and load the xml into it. Dim [set] As New DataSet() [set].ReadXml(stream) ' Set the DataSource to the DataSet, and the DataMember ' to state. bindingSource1.DataSource = [set] bindingSource1.DataMember = "state" textBox1.DataBindings.Add("Text", bindingSource1, "name") textBox2.DataBindings.Add("Text", bindingSource1, "capital") End Sub
Adicione um controle BindingNavigator chamado
bindingNavigator1
ao seu formulário.Defina a propriedade BindingSource para
bindingNavigator1
comobindingSource1
. Você pode fazer isso com o designer ou em código.bindingNavigator1.BindingSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1
Exemplo
O exemplo de código a seguir é o exemplo completo para as etapas listadas anteriormente.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Text;
namespace System.Windows.Forms.BindingSourceCurrent
{
class Form1 : Form
{
private IContainer components;
private BindingNavigator bindingNavigator1;
private ToolStripButton bindingNavigatorAddNewItem;
private ToolStripLabel bindingNavigatorCountItem;
private ToolStripButton bindingNavigatorDeleteItem;
private ToolStripButton bindingNavigatorMoveFirstItem;
private ToolStripButton bindingNavigatorMovePreviousItem;
private ToolStripSeparator bindingNavigatorSeparator;
private ToolStripTextBox bindingNavigatorPositionItem;
private ToolStripSeparator bindingNavigatorSeparator1;
private ToolStripButton bindingNavigatorMoveNextItem;
private ToolStripButton bindingNavigatorMoveLastItem;
private TextBox textBox1;
private TextBox textBox2;
private BindingSource bindingSource1;
private ToolStripSeparator bindingNavigatorSeparator2;
public Form1()
{
InitializeComponent();
LoadData();
bindingNavigator1.BindingSource = bindingSource1;
}
private void LoadData()
{
// The xml to bind to.
string xml = @"<US><states>"
+ @"<state><name>Washington</name><capital>Olympia</capital></state>"
+ @"<state><name>Oregon</name><capital>Salem</capital></state>"
+ @"<state><name>California</name><capital>Sacramento</capital></state>"
+ @"<state><name>Nevada</name><capital>Carson City</capital></state>"
+ @"</states></US>";
// Convert the xml string to bytes and load into a memory stream.
byte[] xmlBytes = Encoding.UTF8.GetBytes(xml);
MemoryStream stream = new MemoryStream(xmlBytes, false);
// Create a DataSet and load the xml into it.
DataSet set = new DataSet();
set.ReadXml(stream);
// Set the DataSource to the DataSet, and the DataMember
// to state.
bindingSource1.DataSource = set;
bindingSource1.DataMember = "state";
textBox1.DataBindings.Add("Text", bindingSource1, "name");
textBox2.DataBindings.Add("Text", bindingSource1, "capital");
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources =
new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.bindingNavigator1 = new System.Windows.Forms.BindingNavigator(this.components);
this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel();
this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox();
this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).BeginInit();
this.bindingNavigator1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
this.SuspendLayout();
//
// bindingNavigator1
//
this.bindingNavigator1.AddNewItem = this.bindingNavigatorAddNewItem;
this.bindingNavigator1.CountItem = this.bindingNavigatorCountItem;
this.bindingNavigator1.CountItemFormat = "of {0}";
this.bindingNavigator1.DeleteItem = this.bindingNavigatorDeleteItem;
this.bindingNavigator1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bindingNavigatorMoveFirstItem,
this.bindingNavigatorMovePreviousItem,
this.bindingNavigatorSeparator,
this.bindingNavigatorPositionItem,
this.bindingNavigatorCountItem,
this.bindingNavigatorSeparator1,
this.bindingNavigatorMoveNextItem,
this.bindingNavigatorMoveLastItem,
this.bindingNavigatorSeparator2,
this.bindingNavigatorAddNewItem,
this.bindingNavigatorDeleteItem});
this.bindingNavigator1.Location = new System.Drawing.Point(0, 0);
this.bindingNavigator1.MoveFirstItem = this.bindingNavigatorMoveFirstItem;
this.bindingNavigator1.MoveLastItem = this.bindingNavigatorMoveLastItem;
this.bindingNavigator1.MoveNextItem = this.bindingNavigatorMoveNextItem;
this.bindingNavigator1.MovePreviousItem = this.bindingNavigatorMovePreviousItem;
this.bindingNavigator1.Name = "bindingNavigator1";
this.bindingNavigator1.PositionItem = this.bindingNavigatorPositionItem;
this.bindingNavigator1.TabIndex = 2;
this.bindingNavigator1.Text = "bindingNavigator1";
//
// bindingNavigatorAddNewItem
//
this.bindingNavigatorAddNewItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image")));
this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem";
this.bindingNavigatorAddNewItem.Text = "Add new";
//
// bindingNavigatorCountItem
//
this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem";
this.bindingNavigatorCountItem.Text = "of {0}";
this.bindingNavigatorCountItem.ToolTipText = "Total number of items";
//
// bindingNavigatorDeleteItem
//
this.bindingNavigatorDeleteItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image")));
this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem";
this.bindingNavigatorDeleteItem.Text = "Delete";
//
// bindingNavigatorMoveFirstItem
//
this.bindingNavigatorMoveFirstItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image")));
this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem";
this.bindingNavigatorMoveFirstItem.Text = "Move first";
//
// bindingNavigatorMovePreviousItem
//
this.bindingNavigatorMovePreviousItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image")));
this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem";
this.bindingNavigatorMovePreviousItem.Text = "Move previous";
//
// bindingNavigatorSeparator
//
this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator";
//
// bindingNavigatorPositionItem
//
this.bindingNavigatorPositionItem.DisplayStyle =
System.Windows.Forms.ToolStripItemDisplayStyle.ImageAndText;
this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem";
this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 25);
this.bindingNavigatorPositionItem.Text = "0";
this.bindingNavigatorPositionItem.ToolTipText = "Current position";
//
// bindingNavigatorSeparator1
//
this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1";
// bindingNavigatorMoveNextItem
//
this.bindingNavigatorMoveNextItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image")));
this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem";
this.bindingNavigatorMoveNextItem.Text = "Move next";
//
// bindingNavigatorMoveLastItem
//
this.bindingNavigatorMoveLastItem.Image =
((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image")));
this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem";
this.bindingNavigatorMoveLastItem.Text = "Move last";
//
// bindingNavigatorSeparator2
//
this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(46, 64);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 3;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(46, 104);
this.textBox2.Name = "textBox2";
this.textBox2.TabIndex = 4;
//
// Form1
//
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.bindingNavigator1);
this.Name = "Form1";
((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).EndInit();
this.bindingNavigator1.ResumeLayout(false);
this.bindingNavigator1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
}
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Xml
Imports System.IO
Imports System.Text
Class Form1
Inherits Form
Private components As IContainer
Private bindingNavigator1 As BindingNavigator
Private bindingNavigatorAddNewItem As ToolStripButton
Private bindingNavigatorCountItem As ToolStripLabel
Private bindingNavigatorDeleteItem As ToolStripButton
Private bindingNavigatorMoveFirstItem As ToolStripButton
Private bindingNavigatorMovePreviousItem As ToolStripButton
Private bindingNavigatorSeparator As ToolStripSeparator
Private bindingNavigatorPositionItem As ToolStripTextBox
Private bindingNavigatorSeparator1 As ToolStripSeparator
Private bindingNavigatorMoveNextItem As ToolStripButton
Private bindingNavigatorMoveLastItem As ToolStripButton
Private textBox1 As TextBox
Private textBox2 As TextBox
Private bindingSource1 As BindingSource
Private bindingNavigatorSeparator2 As ToolStripSeparator
Public Sub New()
InitializeComponent()
LoadData()
bindingNavigator1.BindingSource = bindingSource1
End Sub
Private Sub LoadData()
' The xml to bind to.
Dim xml As String = "<US><states>" + "<state><name>Washington</name><capital>Olympia</capital></state>" + "<state><name>Oregon</name><capital>Salem</capital></state>" + "<state><name>California</name><capital>Sacramento</capital></state>" + "<state><name>Nevada</name><capital>Carson City</capital></state>" + "</states></US>"
' Convert the xml string to bytes and load into a memory stream.
Dim xmlBytes As Byte() = Encoding.UTF8.GetBytes(xml)
Dim stream As New MemoryStream(xmlBytes, False)
' Create a DataSet and load the xml into it.
Dim [set] As New DataSet()
[set].ReadXml(stream)
' Set the DataSource to the DataSet, and the DataMember
' to state.
bindingSource1.DataSource = [set]
bindingSource1.DataMember = "state"
textBox1.DataBindings.Add("Text", bindingSource1, "name")
textBox2.DataBindings.Add("Text", bindingSource1, "capital")
End Sub
<STAThread()> _
Public Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.bindingNavigator1 = New System.Windows.Forms.BindingNavigator(Me.components)
Me.bindingNavigatorAddNewItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorCountItem = New System.Windows.Forms.ToolStripLabel()
Me.bindingNavigatorDeleteItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorMoveFirstItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorMovePreviousItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorSeparator = New System.Windows.Forms.ToolStripSeparator()
Me.bindingNavigatorPositionItem = New System.Windows.Forms.ToolStripTextBox()
Me.bindingNavigatorSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.bindingNavigatorMoveNextItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorMoveLastItem = New System.Windows.Forms.ToolStripButton()
Me.bindingNavigatorSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.textBox2 = New System.Windows.Forms.TextBox()
Me.bindingSource1 = New System.Windows.Forms.BindingSource(Me.components)
CType(Me.bindingNavigator1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.bindingNavigator1.SuspendLayout()
CType(Me.bindingSource1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
' bindingNavigator1
'
Me.bindingNavigator1.AddNewItem = Me.bindingNavigatorAddNewItem
Me.bindingNavigator1.CountItem = Me.bindingNavigatorCountItem
Me.bindingNavigator1.CountItemFormat = "of {0}"
Me.bindingNavigator1.DeleteItem = Me.bindingNavigatorDeleteItem
Me.bindingNavigator1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.bindingNavigatorMoveFirstItem, Me.bindingNavigatorMovePreviousItem, Me.bindingNavigatorSeparator, Me.bindingNavigatorPositionItem, Me.bindingNavigatorCountItem, Me.bindingNavigatorSeparator1, Me.bindingNavigatorMoveNextItem, Me.bindingNavigatorMoveLastItem, Me.bindingNavigatorSeparator2, Me.bindingNavigatorAddNewItem, Me.bindingNavigatorDeleteItem})
Me.bindingNavigator1.Location = New System.Drawing.Point(0, 0)
Me.bindingNavigator1.MoveFirstItem = Me.bindingNavigatorMoveFirstItem
Me.bindingNavigator1.MoveLastItem = Me.bindingNavigatorMoveLastItem
Me.bindingNavigator1.MoveNextItem = Me.bindingNavigatorMoveNextItem
Me.bindingNavigator1.MovePreviousItem = Me.bindingNavigatorMovePreviousItem
Me.bindingNavigator1.Name = "bindingNavigator1"
Me.bindingNavigator1.PositionItem = Me.bindingNavigatorPositionItem
Me.bindingNavigator1.TabIndex = 2
Me.bindingNavigator1.Text = "bindingNavigator1"
'
' bindingNavigatorAddNewItem
'
Me.bindingNavigatorAddNewItem.Image = CType(resources.GetObject("bindingNavigatorAddNewItem.Image"), System.Drawing.Image)
Me.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"
Me.bindingNavigatorAddNewItem.Text = "Add new"
'
' bindingNavigatorCountItem
'
Me.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"
Me.bindingNavigatorCountItem.Text = "of {0}"
Me.bindingNavigatorCountItem.ToolTipText = "Total number of items"
'
' bindingNavigatorDeleteItem
'
Me.bindingNavigatorDeleteItem.Image = CType(resources.GetObject("bindingNavigatorDeleteItem.Image"), System.Drawing.Image)
Me.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"
Me.bindingNavigatorDeleteItem.Text = "Delete"
'
' bindingNavigatorMoveFirstItem
'
Me.bindingNavigatorMoveFirstItem.Image = CType(resources.GetObject("bindingNavigatorMoveFirstItem.Image"), System.Drawing.Image)
Me.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"
Me.bindingNavigatorMoveFirstItem.Text = "Move first"
'
' bindingNavigatorMovePreviousItem
'
Me.bindingNavigatorMovePreviousItem.Image = CType(resources.GetObject("bindingNavigatorMovePreviousItem.Image"), System.Drawing.Image)
Me.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"
Me.bindingNavigatorMovePreviousItem.Text = "Move previous"
'
' bindingNavigatorSeparator
'
Me.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"
'
' bindingNavigatorPositionItem
'
Me.bindingNavigatorPositionItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.ImageAndText
Me.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"
Me.bindingNavigatorPositionItem.Size = New System.Drawing.Size(50, 25)
Me.bindingNavigatorPositionItem.Text = "0"
Me.bindingNavigatorPositionItem.ToolTipText = "Current position"
'
' bindingNavigatorSeparator1
'
Me.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"
'
' bindingNavigatorMoveNextItem
'
Me.bindingNavigatorMoveNextItem.Image = CType(resources.GetObject("bindingNavigatorMoveNextItem.Image"), System.Drawing.Image)
Me.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"
Me.bindingNavigatorMoveNextItem.Text = "Move next"
'
' bindingNavigatorMoveLastItem
'
Me.bindingNavigatorMoveLastItem.Image = CType(resources.GetObject("bindingNavigatorMoveLastItem.Image"), System.Drawing.Image)
Me.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"
Me.bindingNavigatorMoveLastItem.Text = "Move last"
'
' bindingNavigatorSeparator2
'
Me.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"
'
' textBox1
'
Me.textBox1.Location = New System.Drawing.Point(46, 64)
Me.textBox1.Name = "textBox1"
Me.textBox1.TabIndex = 3
'
' textBox2
'
Me.textBox2.Location = New System.Drawing.Point(46, 104)
Me.textBox2.Name = "textBox2"
Me.textBox2.TabIndex = 4
'
' Form1
'
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(textBox2)
Me.Controls.Add(textBox1)
Me.Controls.Add(bindingNavigator1)
Me.Name = "Form1"
CType(Me.bindingNavigator1, System.ComponentModel.ISupportInitialize).EndInit()
Me.bindingNavigator1.ResumeLayout(False)
Me.bindingNavigator1.PerformLayout()
CType(Me.bindingSource1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
End Class
Compilando o código
Este exemplo requer:
- Referências aos assemblies System, System.Data, System.Drawing, System.Windows.Forms e System.Xml.
Ver também
.NET Desktop feedback