1

あいまいな一致が見つかったという問題に直面しています

つまり、コントロールのすべてのプロパティを実行して、ユーザーがコントロールのプロパティに変更を加えたかどうかを確認し、変更されたプロパティのみを取得して、これらのプロパティの値を保存しようとしています。

提案に従いましたが、コントロールが TabControl の場合 (tabControl には 2 つの tabPages があります)、適切なパディングでエラーが発生します。

4

2 に答える 2

0

謝らなければなりません。
私の以前の答えは間違っていました。
BindingFlags.DeclaredOnly では、必要なプロパティを取得できません。
そのため、他の方法で問題を修正する必要がありました。

この問題は、2 つのプロパティが同じ名前を持っているために発生します。
そこで、同じ名前のプロパティが異なる場所を検索したところ、異なるdeclaringType,MetadataTokenおよびPropertyTypeを持っていることがわかりました。
そこで、値を取得して問題を解決する方法を変更します。

Dim val = cntrl.GetType().GetProperty(prop.Name, prop.PropertyType).GetValue(cntrl, Nothing)           
Dim defVal = newCnt.GetType().GetProperty(prop.Name,prop.PropertyType).GetValue(newCnt,Nothing)

私が誰かを誤解させた場合は申し訳ありません。

于 2012-10-25T09:10:51.413 に答える