我们正在运行一个使用Windows Forms的.NET 4.0应用程序。该应用程序使用单个表单来处理两种不同类型的对象。
当在.NET 4.0中运行上述绑定时,我们会收到错误信息:
“发生错误:无法将DataSource的属性或列Message绑定。参数名称:dataMember”
然而,如果安装.NET 4.5,则可以解决此问题。
这是.NET 4.0的局限性、错误还是其他原因导致的呢?
namespace NetIssue
{
public partial class Form1 : Form
{
B myObj;
public Form1()
{
InitializeComponent();
myObj = new B();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.DataBindings.Add(new Binding("Text", myObj, "c.Message"));
}
}
public class Comment {
public int ID { get; set; }
public string Message { get; set; }
public Comment(string msg)
{
Message = msg;
}
}
public class A {
string MyName = "";
}
public class B : A {
public Comment c { get; set; }
public B()
{
c = new Comment("test");
}
}
}
当在.NET 4.0中运行上述绑定时,我们会收到错误信息:
“发生错误:无法将DataSource的属性或列Message绑定。参数名称:dataMember”
然而,如果安装.NET 4.5,则可以解决此问题。
这是.NET 4.0的局限性、错误还是其他原因导致的呢?
extends
(我猜是:
)之外,还有一件事要提到 - 类B
没有属性Message
,而 WF 不支持像 WPF 那样的属性路径(您不能使用 "c.Message")。 - Ivan StoevtextBox1.DataBindings.Add(new Binding("Text", ((B)myObj).c, "Message"));
(不幸的是我现在没有这样的机器可用)。 - Ivan Stoev