C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 104 を表示中)
■61704 / )  Color 型プロパティの EditorAttribute
□投稿者/ Ruku (4回)-(2011/08/29(Mon) 16:02:35)

分類:[C#] 

System.Drawing.Color 型のプロパティを持つクラスを作成します。
このクラスを PropertyGrid コントロールに設定 (SelectedObject プロパティ) すると、
既定のエディタで編集することができます。

これを、標準のカラー ダイアログで編集できるようにしたいため、UITypeEditor から派生するクラスを作成しました。
この作成したクラスを、該当プロパティの EditorAttribute に指定したところ意図した動作になりません。

# 既定のエディタから WebColor のタブだけ抜き出した感じ? が表示される。
# 作成したクラスの EditValue メソッドが実行されている様子はありません。

他に設定すべき属性 (か何か) があるでしょうか。
よろしくお願いします。

# 以下ミニマムコードです。


public class ColorDialogEditor : UITypeEditor
{
    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        // 呼ばれている形跡なし。

        using (var dialog = new ColorDialog()) {
            dialog.Color = (Color)value;

            var result = dialog.ShowDialog();
            if (result == DialogResult.OK) {
                return dialog.Color;
            }
        }
        return value;
    }
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }
}

public class Hoge
{
    [Editor(typeof(ColorDialogEditor), typeof(UITypeEditor))]
    public Color TestColor { get; set; }
}


PropertyGrid を配置したフォーム上のどこかで、

propertyGrid1.SelectedObject = new Hoge();

返信 編集キー/


管理者用

- Child Tree -