天天看点

binding list example

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace bindinglistexample

{

    public partial class Form1 : Form

    {

        Random randomNumber = new Random();

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            InitializeListOfParts();

            listBox1.DataSource = ListOfParts;

            listBox1.DisplayMember = "PartName";

            //listBox1.DisplayMember = "PartNumber";

            ListOfParts.AddingNew += new AddingNewEventHandler(ListOfParts_AddingNew);

            ListOfParts.ListChanged += new ListChangedEventHandler(ListOfParts_ListChanged);

        }

        BindingList<Part> ListOfParts;

        private void InitializeListOfParts()

        {

            ListOfParts = new BindingList<Part>();

            ListOfParts.AllowNew = true;

            ListOfParts.AllowRemove = false;

            ListOfParts.RaiseListChangedEvents = true;

            ListOfParts.AllowEdit = false;

            ListOfParts.Add(new Part("Widget",1234));

            ListOfParts.Add(new Part("Gdget",5678));

        }

        void ListOfParts_AddingNew(object sender, AddingNewEventArgs e)

        {

            e.NewObject = new Part(textBox1.Text, int.Parse(textBox2.Text)); 

        }

        void ListOfParts_ListChanged(object sender,ListChangedEventArgs e)

        {

            MessageBox.Show(e.ListChangedType.ToString());

        }

        private void button1_Click(object sender, EventArgs e)

        {

            Part newPart = ListOfParts.AddNew();

            if (newPart.PartName.Contains(" "))

            {

                MessageBox.Show("Part name cannot contain spaces");

                ListOfParts.CancelNew(ListOfParts.IndexOf(newPart));

            }

            else

            {

                textBox2.Text = randomNumber.Next(9999).ToString();

                textBox1.Text = "Enter Part Name";

            }

        }

    }

    public class Part

    {

        private string name;

        private int number;

        public Part() { }

        public Part(string nameForPart, int numberForPart)

        {

            PartName = nameForPart;

            PartNumber = numberForPart;

        }

        public string PartName

        {

            get { return name; }

            set { name = value; }

        }

        public int PartNumber

        {

            get { return number; }

            set { number = value; }

        }

    }

}