binding list example

来源:互联网 发布:生孩子的手机游戏知乎 编辑:程序博客网 时间:2024/05/22 22:59

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; }
        }
    }
}

原创粉丝点击