我在程序中用了一个List<T>存储临时数据,数据是用按钮加输入框产生的。//构造函数中
    {
            this._items = new List<TestItem>();
            this.listBox1.DataSource = this._items;
            this.listBox1.DisplayMember = "ID";
            this.listBox1.ValueMember = "Name";
     }//Item 类
    public class TestItem
    {
        private int id;
        private string name;        public int ID
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }
把List换成自己派生的Collection也不行;是不是ListBox不支持绑定啊?自己维护数据太累

解决方案 »

  1.   

    TestItem最好实现一下IPropertyChanged接口。
      

  2.   

    用BindingList吧。
    //TestItem.cs
    public class TestItem : INotifyPropertyChanged
    {        private int id;
            private string name;
            public event PropertyChangedEventHandler PropertyChanged;        public void NotifyPropertyChanged(string info)
            {
                if(PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(info));
            }        public int ID
            {
                get { return id; }
                set
                {
                    id = value;
                    NotifyPropertyChanged("ID");
                }
            }
            public string Name
            {
                get { return name; }
                set
                {
                    name = value;
                    NotifyPropertyChanged("Name");
                }
            }
              
    }// Form1.cs
    private BindingList<TestItem> _items;
    private int n = 1;
    public Form1()
    {
                InitializeComponent();
    }private void Form1_Load(object sender, EventArgs e)
    {
                _items = new BindingList<TestItem>();
                listBox1.DataSource = _items;
                listBox1.DisplayMember = "Name";
                listBox1.ValueMember = "ID";
    }private void button1_Click(object sender, EventArgs e)
    {            _items.Add(new TestItem { ID = n++, Name = "name" + n });
    }