le tabs dati winform funzionano solo su macchine di sviluppo

Sto prendendo di mira il framework 4.0 e questo funziona bene sul computer di sviluppo, posso vedere all’avvio il modulo con la casella di testo che visualizza il messaggio associato in esso. Ma quando distribuisco l’eseguibile su qualsiasi altra macchina, non funzionerà sostenendo che “non può legarsi alla proprietà o alla colonna Note sul DataSource”. La cosa molto strana è che funziona bene su qualsiasi macchina se compilo il targeting del framework 3.5. Qualcuno potrebbe spiegare questo strano comportamento? Cosa può essere diverso tra ambiente di sviluppo e macchine client?

namespace Demo { public partial class Form1 : Form { private readonly SimpleDataContext _dataContext; public Form1() { InitializeComponent(); _dataContext = new SimpleDataContext { Prop = new SimpleProp { Note = "hi!" }}; textBox1.DataBindings.Add("Text", _dataContext, "Prop.Note"); } } public class SimpleDataContext { public SimpleProp Prop { get; set; } } public class SimpleProp { public string Note { get; set; } } } 

Ultime modifiche in 4.0. Vedi problema di binding semplice .Net 4.0

La soluzione è utilizzare BindingSource:

 public Form1() { InitializeComponent(); _dataContext = new SimpleDataContext { Prop = new SimpleProp { Note = "hi!" } }; BindingSource bs = new BindingSource(_dataContext, null); textBox1.DataBindings.Add("Text", bs, "Prop.Note"); }