我在绑定到类时做错了什么

本文关键字:错了 什么 绑定 | 更新日期: 2023-09-27 18:34:19

我有一个名为PlatypusInfo的类。

我调用一个返回该类实例的方法:

PlatypusInfo pi;
. . .
pi = MammalData.PopulateplatypusData(oracleConnectionMainForm, textBoxPlatypusID.Text);
. . .
public static PlatypusInfo PopulateplatypusData(OracleConnection oc, String platypusID) {
    int platypusABCID = getABCIDForDuckBillID(oc, platypusID);
    platypusInfo pi = new platypusInfo();

。但得到这个错误的消息:"System.ArgumentException 未处理 消息=无法绑定到数据源上的属性或列鸭嘴兽名称。参数名称:数据成员 Source=System.Windows.Forms 参数名称=数据成员"

。在以下代码行上:

textBoxPlatypusID.DataBindings.Add(new Binding("Text", pi, "platypusName"));

我认为使用我的代码,应该将PlatypusInfo类的platypusName成员(其实例为"pi")分配给textBoxPlatypusID的Text属性。

那么我理解错了,是

我做错了,还是两者兼而有之?

我在绑定到类时做错了什么

您需要

将其从字段更改为属性,并添加INotifyPropertyChanged接口的实现。 所以像这样:

public class PlatypusInfo : INotifyPropertyChanged
{         
    public event PropertyChangedEventHandler PropertyChanged;
    private String _PlatypusName;
    public String PlatypusName 
    { 
       get
       {
          return _PlatypusName;
       }
       set 
       {
          _PlatypusName = value;
          NotifyPropertyChanged("PlatypusName");
       }
    }
    private void NotifyPropertyChanged(String info)
    {
       PropertyChangedEventHandler property_changed = PropertyChanged;
       if (property_changed != null)
       {
          property_changed(this, new PropertyChangedEventArgs(info));
       }
    }
}

然后数据绑定将如下所示:

textBoxPlatypusID.DataBindings.Add(new Binding("Text", pi, "PlatypusName"));

假设piPlatypusInfo对象。

类 PlatypusInfo 是否实现了接口 INotifyPropertyChanged