0

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();

...しかし、このerr msgを取得します:"System.ArgumentExceptionは未処理でしたMessage= DataSourceのプロパティまたは列platypusNameにバインドできません。パラメーター名:dataMember Source = System.Windows.Forms ParamName = dataMember"

...このコード行:

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

私のコードでは、PlatypusInfoクラスのplatypusNameメンバー(インスタンスは「pi」)をtextBoxPlatypusIDのTextプロパティに割り当てる必要があると考えています。

それで、私はこれを間違って理解していますか、それについて間違っていますか、またはその両方ですか?

4

2 に答える 2

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

于 2012-05-15T23:37:55.107 に答える
0

PlatypusInfoクラスはインターフェイスINotifyPropertyChangedを実装していますか

于 2012-05-15T20:10:51.647 に答える