我有一个现有的类,其中包含类似于这个的属性:
private int _someprop = 6;
[Display(Name = "SomeDisplayName", Order = 0, Description = "Description", GroupName="GroupName")]
[GridCategory("Parameters")]
public int SomeProp
{
get { return _someprop ; }
set { _someprop = value; }
}
我希望将所有这些属性显示在 PropertyGrid 中,并为每个属性添加一个子类别类,其中包含 3 个属性 - 最小值、最大值和步长(数值)。拥有一个具有布尔值和枚举值的子类别类也很棒。问题是不应以任何方式更改包含“SomeProp”属性的原始类,因为它是直接从另一个程序引用的。此方案的另一个要求是所有子类别属性也应该是可访问的。
这是预期结果的屏幕截图:
http://img542.imageshack.us/img542/5862/hfox.png
有没有办法做到这一点?
编辑:
这个想法是从属性网格中设置值。场景如下:我有一个带有参数列表的属性网格。假设参数是 int 类型。我希望能够优化这个参数。这意味着用户应该能够向主属性网格输入起始值(最小值)、结束值(最大值)和步长值。从那里我需要检索用户输入的最小值、最大值和步长值,并创建一个变体列表。
一个例子是:如果用户输入 min = 10,max = 20,step = 2,那么我应该能够在后面的代码中检索这些值并为 main 属性创建一个可能的输入列表(这将是 10 , 12, 14, 16, 18, 20)。然后使用这个列表我可以制作优化逻辑。
min、max 和 step 的初始化值应该如下:min = main 属性默认值,max = main 属性默认值,step = 1。所以基本上所有值都来自 main 属性默认值(即 6 in代码片段)。从那里用户应该能够更改最小值、最大值和步长属性。在这种情况下,我不关心用户是否能够更改主要属性 (6),因为我需要特定步骤的最小值、最大值之间的所有变化。