title: WinForms: object data source usage best practice
body: <p>I want to bind list of business objects to Winforms control (DataGridview, ComboBox, e.t.c.). </p>
  
  <p>There are several approaches to do that:</p>
  
  <p>I can create wrapper classes for business objects and override their <code>ToString</code> method implementation. That will work nice for ComboBox, ListBox  <code>Items.(Add|AddRange)</code> methods. </p>
  
  <p>But this will not work for DataGridView. It requires ObjectDataSource to tune columns in a designer mode. </p>
  
  <p>As there should be ObjectDataSources (for DataGridViews) and wrapper classes I decided to leave only one approach. The ObjectDataSource one. </p>
  
  <p>Now I have ObjectDataSources for databinding. When I use wizard it adds property to a form that I can use like the following:</p>
  
  <pre><code>MyObjectDataSoure.DataSource = list-of-entities;
  </code></pre>
  
  <p>That populates underlying winforms control. But I can also assign list of entities directly to datasource property of control and population will be the same.</p>
  
  <pre><code> MyWinformsControl.DataSource = list-of-entities
  </code></pre>
  
  <p>Yes, now I am without ObjectDataSource events, but may be there is something more general I miss? Should I avoid listening to winforms events (selection changed, user adding a row) and use object data source ones? </p>
  
  <p>What is the best practice to use object datasources and it's events ? </p>
  
  <p>Thank you in advance! </p>