La liaison de données de DataGridView et une Liste<> avec BindingSource

Je suis à essayer de comprendre comment la liaison de données avec BindingSource est censé fonctionner
Je veux un DataGridView à être rempli avec le contenu d'un List<> lors de la mise à jour de la liste.

Je peux voir la List croître et de vérifier qu'il est rempli lorsque je vérifie le débogueur. Je pensais que le BindingSource serait le feu à un événement lors de la List est changé. Mais aucun de disponible est déclenché. Comment puis-je être averti lorsque la liste sous-jacente est changé?

J'ai suivi les instructions et les suivants du code de test:

    Data d;
    BindingSource bs;

    public Form1()
    {
        InitializeComponent();
        bs = new BindingSource();
        d = new Data();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        bs.DataSourceChanged += new EventHandler(bs_DataSourceChanged);
        bs.ListChanged += new ListChangedEventHandler(bs_ListChanged);
        bs.DataMemberChanged += new EventHandler(bs_DataMemberChanged);
        bs.CurrentChanged += new EventHandler(bs_CurrentChanged);
        bs.CurrentItemChanged += new EventHandler(bs_CurrentItemChanged);

        bs.DataSource = d.list;
        dataGridView1.DataSource = bs;
    }
    //... all the handling methods caught with a break point in VS.

    private void button1_Click(object sender, EventArgs e)
    {
        d.addOneItem();
    }
ajout de l'exemple par la demande

OriginalL'auteur rdoubleui | 2009-12-04