Pregunta sobre winforms, .net, data-binding, versioning, c# – El enlace de datos de Winforms solo funciona en la máquina de desarrollo.

2

Estoy apuntando al framework 4.0 y esto funciona bien en la máquina de desarrollo, puedo ver al inicio el formulario con el cuadro de texto que muestra un mensaje enlazado en él. Pero cuando implemento el ejecutable en cualquier otra máquina, no funcionará alegando que "no se puede enlazar con la propiedad o columna Nota en el DataSource". Lo extraño es que funciona bien en cualquier máquina si compilo apuntando al marco 3.5. Alguien podría explicar este extraño comportamiento? ¿Qué puede ser diferente entre el entorno de desarrollo y las máquinas cliente?

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; }
    }  
}

Tu respuesta

1   la respuesta
2

Tema de enlace simple .Net 4.0

La solución es utilizar un 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");    
}

Preguntas relacionadas