1

次のようなプロパティを含む既存のクラスがあります。

private int _someprop = 6;

[Display(Name = "SomeDisplayName", Order = 0, Description = "Description", GroupName="GroupName")]
[GridCategory("Parameters")]
public int SomeProp
{
get { return _someprop ; }
set { _someprop = value; }
}

min、max、step (数値) の 3 つのプロパティを含むサブカテゴリ クラスをそれぞれに追加して、これらすべてのプロパティを PropertyGrid に表示したいと考えています。ブール値と列挙値を持つサブカテゴリ クラスを持つことも素晴らしいでしょう。問題は、「SomeProp」プロパティを含む元のクラスは、別のプログラムから直接参照されるため、いかなる方法でも変更してはならないということです。このシナリオのもう 1 つの要件は、すべてのサブカテゴリ プロパティにもアクセスできる必要があることです。

これは、期待される結果のスクリーンショットです。

http://img542.imageshack.us/img542/5862/hfox.png

これを達成する方法はありますか?

編集:

アイデアは、プロパティ グリッドから値を設定することです。シナリオは次のとおりです。パラメーターのリストを含むプロパティ グリッドがあります。パラメータが int 型であるとしましょう。このパラメータを最適化できるようにしたいと思います。これは、ユーザーが開始値 (最小)、終了値 (最大)、およびステップ値をメイン プロパティ グリッドに入力できる必要があることを意味します。そこから、min、max、step のユーザー入力値を取得し、バリエーションのリストを作成する必要があります。

例: ユーザーが最小 = 10、最大 = 20、ステップ = 2 を入力した場合、コード ビハインドでこれらの値を取得し、メイン プロパティ (10 になります) の可能な入力のリストを作成できるはずです。 、12、14、16、18、20)。次に、このリストを使用して、最適化ロジックを作成できます。

min、max、および step の初期化値は次のようになります。min = メイン プロパティのデフォルト値、max = メイン プロパティのデフォルト値、step = 1。したがって、基本的にすべての値はメイン プロパティのデフォルト値から取得されます (これは 6 です)。コード スニペット)。そこから、ユーザーは最小、最大、およびステップのプロパティを変更できるはずです。その場合、特定のステップで最小、最大の間のすべてのバリエーションが必要になるため、ユーザーがメイン プロパティ (6) を変更できるかどうかは気にしません。

4

0 に答える 0