如下,有这段程序在 button被点击的时候我会给List<mm> 增加一条记录,可是List<mm>是被邦定到dataGridView上的,按理说dataGridView应该实时更新增加的内容,可是dataGridView还是保持以前的老样子,什么都不更新,除非我先把它 = null,然后再assign value,可是这样做我觉得是非常愚蠢的办法,有没有什么方法能让dataGridView自动更新内容呢?另外,dataGridView的Update(), Refersh()我都试过,没有用的,请高手指教 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ml.Add(new mm("opp", "mmn"));
            ml.Add(new mm("opp1", "mmn1"));            dataGridView1.DataSource = ml;
        }        private void button1_Click(object sender, EventArgs e)
        {
            ml.Add(new mm("sdfdsf", "qwwqe"));
            //dataGridView1.DataSource = null;  除非先把它 = null,否则dataGridView不更新内容
            dataGridView1.DataSource = ml;
        }        List<mm> ml = new List<mm>();
    }    public class mm
    {
        public string Name { get; set; }
        public string Age { get; set; }        public mm(string n, string a)
        {
            Name = n;
            Age = a;
        }
    }

解决方案 »

  1.   

    建议你建个 BindingSource 对象 
      BindingSource bindingSource1 = new BindingSource();将dataGridView1的数据源关联到bindingSource1
      dataGridView1.DataSource = bindingSource1;然后再将bindingSource1的数据源关联到 List
      bindingSource1.DataSource = ml;操作时 直接使用 bindingSource1
      如添加时 bindingSource1.Add(new mm("a2", "a2"));这样dataGridView1和ml 都会被更新的
      

  2.   

        List <mm> ml = new List <mm>(); 
        public Form1() 
            { 
                InitializeComponent(); 
                ml.Add(new mm("opp", "mmn")); 
                ml.Add(new mm("opp1", "mmn1")); 
                dataGridView1.DataSource = ml; 
            }         private void button1_Click(object sender, EventArgs e) 
            { 
                ml.Add(new mm("sdfdsf", "qwwqe")); 
                dataGridView1.DataSource = ml; 
            } 
    还不行就用用BindingList<T>对象代替Ilist<T>
    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = ml ;
    dataGridView1.DataSource = bindingSource;