title: Dynamically Created Winform Comboboxes all selecting the same value
body: <p>I'm creating a winform application wit C# and VS 2010 Ultimate. I'm populating a flowlayoutpanel with dynamically created comboxes, all databound to the same bindinglist.
  When I run the application, it adds the comboxes correctly but when I select an item on one combobox, all the others are updated with the same selection.
  What am I doing wrong?
  Thanks very much for any help received.
  J.</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Windows.Forms;
  using System.IO;
  
  namespace TestCompleteForm
  {
  public partial class Form1 : Form
  {
      private int comboBoxIndex = 0;
      List&lt;string&gt; Existingfiles;
      BindingList&lt;string&gt; ExistingSystemsList;
      List&lt;string&gt; Selectedfiles;
      BindingList&lt;string&gt; SelectedSystemsList;
      BindingList&lt;string&gt; ListOfLanguages = new BindingList&lt;string&gt;();
      BindingList&lt;string&gt; ListOfSQLServers = new BindingList&lt;string&gt;();
  
      public Form1()
      {
          InitializeComponent();
      }
  
      private void Form1_Load(object sender, EventArgs e)
      {
          DirectoryInfo dinfo = new DirectoryInfo(@"C:\Hosts");
          FileInfo[] Files = dinfo.GetFiles("*.txt");
          Existingfiles = new List&lt;string&gt;();
  
          foreach (FileInfo file in Files)
          {
              Existingfiles.Add(Path.GetFileNameWithoutExtension(file.Name));
          }
          ExistingSystemsList = new BindingList&lt;string&gt;(Existingfiles);
          lbAvailableSystems.DataSource = ExistingSystemsList;
  
  
          Selectedfiles = new List&lt;string&gt;();
          SelectedSystemsList = new BindingList&lt;string&gt;(Selectedfiles);
          lbSelectedSystems.DataSource = SelectedSystemsList;
  
  
          //Creat list of languages
          var txtLanguages = File.ReadAllLines(@"C:\Languages\Languages.txt");
          foreach (var s in txtLanguages) ListOfLanguages.Add(s);
  
          //Creat list of sql servers
          var txtSqlServers = File.ReadAllLines(@"C:\SQL Servers\sql-servers.txt");
          foreach (var s in txtSqlServers) ListOfSQLServers.Add(s);
      }
  
      private void TabControl1_Click(object sender, EventArgs e)
      {
          if (tabControl1.SelectedTab.Name.ToString() == "page2")
          {
              while (flowLayoutPanel1.Controls.Count &gt; 0)
              {
                  var ControlToRemove = flowLayoutPanel1.Controls[0];
                  flowLayoutPanel1.Controls.Remove(ControlToRemove);
                  ControlToRemove.Dispose();
              }
              //flowLayoutPanel1.Controls.Clear();
              foreach (string StrSystem in SelectedSystemsList)
              {
                  Label lNewSystem = new Label();
                  lNewSystem.Text = StrSystem;
                  flowLayoutPanel1.Controls.Add(lNewSystem);
                  //Add combobox for languages
                  ComboBox cbLanguages = new ComboBox();
                  cbLanguages.Name = "cbLanguages" + comboBoxIndex.ToString();
                  cbLanguages.DataSource = ListOfLanguages;
                  flowLayoutPanel1.Controls.Add(cbLanguages);
                  //Add combobox for database servers
                  ComboBox cbSqlServers = new ComboBox();
                  cbSqlServers.Name = "cbSqlServers" + comboBoxIndex.ToString();
                  cbSqlServers.DataSource = ListOfSQLServers;
                  flowLayoutPanel1.Controls.Add(cbSqlServers);
                  comboBoxIndex++;
              }
          }
      }
  </code></pre>