2012-02-21 47 views
3

カテゴリとサブカテゴリに分けることができるいくつかのプロパティがあります。 PropertyGridに追加すると、すべてのサブカテゴリがルートにありますが、サブカテゴリはカテゴリの子になります。winformsのカテゴリ階層PropertyGrid

class Settings 
    { 
     [Category("SubCategory1")] 
     public bool Property1 { get; set; } 

     [Category("SubCategory1")] 
     public bool Property2 { get; set; } 

     [Category("SubCategory2")] 
     public bool Property3 { get; set; } 
    } 

PropertyGrid grid = new PropertyGrid();  
grid.SelectedObject = new Settings(); 

私はそれは私が解決策を見つけた

-Category1 
    -SubCategory1 
     Property1 
     Property2 
    -SubCategory2 
     Property3 
+0

あなたは何を試しましたか?あなたはすでにどのようなコードを持っていますか?もしそうなら、あなたはいくつかを見せることができますか? ... – Abbas

+3

http://msdn.microsoft.com/en-us/library/aa302326.aspx – vulkanino

+0

この記事では、カテゴリの階層については実際には何もありません。私は必要な機能を備えたコントロールを見つけました。 http://visualstudiogallery.msdn.microsoft.com/A4A710C1-7B90-4C36-A4FA-FF12B99B54C6。しかし、私は標準のPropertyEditorを使用して入れ子になったプロパティを作成したい。 – PSsam

答えて

7

のように見えるようにしたいです。このアプローチは、TypeConverter属性とネストされたクラスを使用することです。

var settings = new Settings(); 
settings.Subcategory1 = new SubCategory1(){Property1 = "P1", Property2 = "P2"}; 
settings.Subcategory2 = new SubCategory2(){Property3="P3"}; 
grid.SelectedObject = settings; 

...

public class Settings 
{ 
    [Category("Category1")] 
    public SubCategory1 Subcategory1 { get; set; } 

    [Category("Category1")] 
    public SubCategory2 Subcategory2 { get; set; } 
} 

[TypeConverter(typeof (ExpandableObjectConverter))] 
public class SubCategory1 
{ 
    public String Property1 { get; set; } 

    public String Property2 { get; set; } 

    public override string ToString() 
    { 
     return String.Empty; 
    } 
} 

[TypeConverter(typeof(ExpandableObjectConverter))] 
public class SubCategory2 
{ 
    public String Property3 { get; set; } 

    public override string ToString() 
    { 
     return String.Empty; 
    } 
} 

は、それが誰かを助けることを願っています。

関連する問題