我有一个名为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未处理 Message =无法绑定到DataSource上的属性或列platypusName。 参数名称:dataMember 来源= System.Windows.Forms的 PARAMNAME =数据成员"
...在这行代码中:
textBoxPlatypusID.DataBindings.Add(new Binding("Text", pi, "platypusName"));
我认为使用我的代码,PlatypusInfo类的platypusName成员(其实例是" pi")应该被分配给textBoxPlatypusID的Text属性。
所以我不正确地理解这一点,我是错误的,还是两者兼而有之?
答案 0 :(得分:1)
您需要将其从字段更改为属性并添加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"));
假设pi
是PlatypusInfo
对象。
答案 1 :(得分:0)
PlatypusInfo类是否实现了接口INotifyPropertyChanged