Cómo: Explorar datos con el control BindingNavigator de formularios Windows Forms
Actualización: noviembre 2007
La aparición del control BindingNavigator en los formularios Windows Forms permite a los desarrolladores proporcionar a los usuarios finales una interfaz sencilla para la manipulación y exploración de datos en los formularios que creen.
El control BindingNavigator es un controlToolStrip con botones preconfigurados para desplazarse al primer registro de conjunto de datos, al último, al siguiente y al anterior, así como botones para agregar y eliminar registros. Es fácil agregar botones al control BindingNavigator, porque es un control ToolStrip.
Para cada botón del control BindingNavigator, hay un miembro correspondiente del componente BindingSource que mediante programación permite la misma funcionalidad. Por ejemplo, el botón MoveFirstItem corresponde al método MoveFirst del componente BindingSource, el botón DeleteItem corresponde al métodoRemoveCurrent, y así sucesivamente. Como resultado, permitir que el control BindingNavigator realice el desplazamiento de registros de datos es tan simple como establecer su propiedad BindingSource en el componente BindingSource del formulario.
Para configurar el control BindingNavigator
Agregue un componente BindingSource denominado bindingSource1 y dos controles TextBox denominados textBox1 y textBox2.
Enlace bindingSource1 a los datos y los controles del cuadro de texto a bindingSource1. Para ello, pegue el código siguiente en su formulario y llame a LoadData desde el constructor del formulario o el método de control de eventos Load.
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 'LoadData
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"); }
Agregue al formulario un control BindingNavigator denominado bindingNavigator1.
Establezca la propiedad BindingSource para bindingNavigator1 en bindingSource1. Puede hacer esto con el diseñador o en el código.
bindingNavigator1.BindingSource = bindingSource1
bindingNavigator1.BindingSource = bindingSource1;
Ejemplo
El ejemplo de código siguiente es el ejemplo completo para los pasos enumerados anteriormente.
Imports System
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 'New
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 'LoadData
<STAThread()> _
Public Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub 'Main
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 'InitializeComponent
End Class 'Form1
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();
}
}
}
Compilar el código
Este ejemplo requiere:
- Referencias a los ensamblados System, System.Data, System.Drawing, System.Windows.Forms y System.Xml.
Para obtener información acerca de la generación de este ejemplo desde la línea de comandos de Visual Basic o Visual C#, vea Generar desde la línea de comandos (Visual Basic) o Generar la línea de comandos con csc.exe. También puede generar este ejemplo en Visual Studio pegando el código en un proyecto nuevo.