PropertyGridがデフォで用意してくれる見た目は素敵。
でも、これはSelectedObjectに設定されたオブジェクトのプロパティをそのまま見せてる(Attributeで見せ方をカスタマイズ可能)だけ。
ということで、Tabを1つ追加して自分の世界を作るぞ!
Tabを追加するの自体は簡単。
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms.Design; using System.ComponentModel; using System.Windows.Forms; using System.Drawing; namespace Greet.Tab { public class CustomTab : PropertyTab { /// <summary> /// プロパティ返す! /// </summary> public override PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes) { return new PropertyDescriptorCollection(new PropertyDescriptor[0]); } /// <summary> /// タブ名返す! /// </summary> public override string TabName { get { return "タブ名"; } } /// <summary> /// アイコン返す! /// </summary> public override System.Drawing.Bitmap Bitmap { get { return new Bitmap(typeof(CustomTab), "TabIcon.bmp"); } } } }
PropertyTabを継承していくつかのメソッドをオーバーライドするだけ。
後は、属性でこのプロパティタブを使うように設定するだけ。
[PropertyTab(typeof(CustomTab), PropertyTabScope.Component)] [DefaultProperty("Greets")] public partial class GreetControl : UserControl { // 略 }
こんな具合。
PropertyTabAttributeの第二引数が何かは知らない(ぉ
イメージは出来るけど。
これで、何も表示されないタブの出来上がり!
CustomTabのGetPropertiesで自分で拡張したPropertyDescriptorをコレクションにぶちこんで返せば自由に項目を足したり出来る。
幸せ。
でも、あまり使わないと思うのでこれに関しては深追いしない。