【WinForm.NET开发】使用 Windows 窗体 BindingNavigator 控件导航数据

发布时间:2024年01月22日

本文内容

Windows 窗体提供?BindingNavigator?控件,开发人员可通过该控件在他们创建的窗体上为最终用户提供简单的数据导航和用户界面操作。

BindingNavigator?控件是一个?ToolStrip?控件,该控件上带有预配置为导航到数据集中第一条、最后一条、下一条和上一条记录的按钮,而且还有用于添加和删除记录的按钮。 将按钮添加到?BindingNavigator?控件非常简单,因为它是一个?ToolStrip?控件。

对于?BindingNavigator?控件上的每个按钮,都有一个对应的?BindingSource?组件成员,以编程方式允许相同的功能。 例如,MoveFirstItem?按钮对应?BindingSource?组件的?MoveFirst?方法,DeleteItem?按钮对应?RemoveCurrent?方法,依次类推。 这样,启用?BindingNavigator?控件导航数据记录就如同在窗体上将其?BindingSource?属性设置为适当的?BindingSource?组件一样简单。

设置 BindingNavigator 控件

  1. 添加一个名为?bindingSource1?的?BindingSource?组件和两个分别名为?textBox1?和?textBox2?的?TextBox?控件。

  2. 将?bindingSource1?绑定到数据,并将文本框控件绑定到?bindingSource1。 若要执行此操作,请将下面的代码粘贴到窗体中,并从窗体的构造函数调用?LoadData?或调用?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");
    }
    
  3. 将名为?bindingNavigator1?的?BindingNavigator?控件添加到窗体。

  4. 将?bindingNavigator1的?BindingSource?属性设置为?bindingSource1。 可以使用设计器或用代码执行此操作。

    bindingNavigator1.BindingSource = bindingSource1;
    

示例

下面的代码示例是前面所列步骤的完整示例。

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();
        }
    }
}
文章来源:https://blog.csdn.net/m0_51887793/article/details/135735432
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。