title: ArgumentOutOfRangeException when adding first item to a BindingList DataSource
body: <p>I'm trying use a BindingList as a DataSource in C#, but whenever I try to add the first item to the BindingList, I get an ArgumentOutOfRangeException thrown. <strong>In my project, I need to clear the BindingList et add new items after it has been set as the DataSource.</strong></p>
  
  <pre><code>BindingList&lt;string&gt; dataSource = new BindingList&lt;string&gt;();
  myComboBox.DataSource = dataSource;
  dataSource.Add("something"); // Exception, here.
  </code></pre>
  
  <p>I know the exception is handled by the .Net framework but i need to find a way to avoid it.</p>
  
  <p>I also tried</p>
  
  <pre><code>List&lt;DirectoryInfo&gt; list = aList.ToList();
  list.AddRange(bList);
  
  //set the index to -1 as suggested
  var index = myComboBox.SelectedIndex;
  myComboBox.SelectedIndex = -1;
  
  myComboBox.DataSource = null;
  bindingList.Clear();
  bindingList.AddRange(list.Distinct());
  if (bindingList.Count &gt; 0)
  {
      //internal ArgumentOutOfRangeException here when binding
      myComboBox.DataSource = bindingList;
      myComboBox.SelectedIndex = index;
  }
  else
      myComboBox.DataSource = null;
  </code></pre>
  
  <p>Thanks, here is the callstack</p>
  
  <pre><code>System.Windows.Forms.dll!System.Windows.Forms.ComboBox.SelectedIndex.set(int value)
  System.Windows.Forms.dll!System.Windows.Forms.ListControl.DataManager_PositionChanged(object sender, System.EventArgs e)
  System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnPositionChanged(System.EventArgs e)
  System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.ChangeRecordState(int newPosition, bool validating, bool endCurrentEdit, bool firePositionChange, bool pullData)
  System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e)
  System.dll!System.ComponentModel.BindingList&lt;System.__Canon&gt;.OnListChanged(System.ComponentModel.ListChangedEventArgs e)
  System.dll!System.ComponentModel.BindingList&lt;System.__Canon&gt;.FireListChanged(System.ComponentModel.ListChangedType type, int index)
  System.dll!System.ComponentModel.BindingList&lt;System.__Canon&gt;.InsertItem(int index, System.__Canon item)
  ######.dll!System.Collections.ObjectModel.Collection&lt;###########&gt;.Add(######### item)
  </code></pre>