2

このコードは、元従業員がカスタムコントロールを備えたカスタムグリッドビュー用に開発したプロジェクトの1つで見つかりましたが、正確には何をしているのかわかりません。

コード

public class aBoundField : ImageField
{
    //here I got some get set properties defined
    protected override void OnDataBindField(object sender, EventArgs e)
    {
        Control control = (Control)sender;

        PropertyDescriptor propertyA = TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true);
        PropertyDescriptor propertyB = TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true);

        PropertyAFieldValue = this.GetValue(control.NamingContainer, this._PropertyAField, ref propertyA).ToString();
        PropertyBFieldValue = this.GetValue(control.NamingContainer, this._PropertyBField, ref propertyB).ToString();
            base.OnDataBindField(sender, e);
    }

OnDataBindField特にPropertyDescriptorを取得しているときに、メソッドで何が起こっているか 。私は少し調べて、それがプロパティバッグであることがわかりましたが、それがプロパティバッグである場合、このコードのプロパティAまたはプロパティBの値をどのように知ることができますか。

 PropertyDescriptor propertyA = TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true);
 PropertyDescriptor propertyB = TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true);

私が正確に理解していないのは

プロパティ記述 子が同じコード行を使用して2つのコントロールの値を取得するにはどうすればよいですか

TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true)

上記のコード行は、プロパティAまたはプロパティBのどちらであるかをどのように判断しますか。

プロパティバッグだと思って1つのプロパティ記述子から値を取得しようとしましたが、正しく機能しませんでした。

4

2 に答える 2

4
GetValue(control.NamingContainer, this._PropertyAField, ref propertyA)

ProperyAは、そのメソッド内でpropertyAに発生するすべてのものが、上記で定義されたpropertyAを更新するための参照として提供されます。

を使用して

PropertyDescriptor propertyA = null;

それ以外の

PropertyDescriptor propertyA = TypeDescriptor.GetProperties(DataBinder.GetDataItem(control.NamingContainer)).Find("boundField", true);

引き続き機能します。

さらに読む
refメソッドパラメータキーワード

于 2013-03-15T11:12:14.893 に答える
0

最新の編集を考慮して:

プロパティ記述子が同じコード行を使用して2つのコントロールの値を取得するにはどうすればよいですか

できません。どういうわけか、元従業員は両方propertyApropertyB同じであることを望んでいたか、タイプミスがあり、これは実際にはある種のバグです。

于 2013-03-15T10:48:23.927 に答える