WinForms 数据绑定仅适用于开发计算机

本文关键字:开发 计算机 适用于 数据绑定 WinForms | 更新日期: 2023-09-27 18:37:01

我的目标是框架 4.0,这在开发机器上工作正常,我可以在启动时看到带有文本框的表单显示绑定消息。但是当我在任何其他计算机上部署可执行文件时,它将无法正常工作,声称"无法绑定到数据源上的属性或列注释"。非常奇怪的是,如果我针对 3.5 框架进行编译,它可以在任何机器上运行良好。有人可以解释这种奇怪的行为吗?开发环境和客户端计算机之间有什么不同?

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

WinForms 数据绑定仅适用于开发计算机

4.0 中的重大更改。 请参阅 .Net 4.0 简单绑定问题

解决方法是使用 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");    
}