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

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

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

Re[1]: PropertyGridでのGridアクションについて


(過去ログ 107 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■63903 / inTopicNo.1)  PropertyGridでのGridアクションについて
  
□投稿者/ howling (17回)-(2012/10/26(Fri) 12:34:29)

分類:[.NET 全般] 

いつもお世話になっております。
質問するつもりで来たはずが、回答して忘れてました^^;

環境:VS2008(またはVS2010)/ C# / Windows7

相変わらずPropertyGridで結構大きいオブジェクトの表示をしております。
そこで、bool値の挙動と、自分で表示しているenumの挙動が異なることに気づきました。
必須な事柄ではないのですが、もしご存知の方がいらっしゃいましたら、お願い致します。

何のことか?という話なのですが、
bool値をメンバに持つクラスのインスタンスをSelectedObjectに割り当てた場合、
そのGridをダブルクリックした時に、値が反転するのです。(true→false,false→true)
また、項目選択後に十字キーの上下を押すことでも値が変わります。

これが、bool値の代わりに自作のenumを割り当てた場合、
同様の動作が全く行えません。
なお、enum値の表現はTypeConverterを使用しておりまして、
かつSystem.Drawing.Design.UITypeEditorも使用し、
UITypeEditorEditStyle.DropDownを指定しています。

おそらく、TypeConverterかUITypeEditorで、何か定義すればいけそうな気がするのですが、
何が足りなくてこうなっているのかわかりません。
どなたかご存知でしょうか?
サンプルコードは下記の通りです。

public enum SomeEnum
{
    SOMEENUM_FALSE = 0,
    SOMEENUM_TRUE = 1,
}

public class SomeEditor : System.Drawing.Design.UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.DropDown;
    }
    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        //実際はListBoxを表示して、選択した文字列によってSomeEnum.SOMEENUM_FALSEかSomeEnum.SOMEENUM_TRUEを返してます
        return value;
    }
}

public class SomeConverter : ExpandableObjectConverter
{
    //CanConvertTo,ConvertTo,CanConvertFrom,ConvertFrom,GetPropertiesのみ実装
}
public class SomeClass
{
    private bool bBoolParam = false;
    private SomeEnum eEnumParam = SomeEnum.SOMEENUM_FALSE;
    public SomeClass(){}

    public bool BoolParam
    {
        set { bBoolParam = value; }
        get { return bBoolParam; }
    }

    [TypeConverter(typeof(SomeConverter))]
    [EditorAttribute(typeof(SomeEditor), typeof(System.Drawing.Design.UITypeEditor))]
    public SomeEnum EnumParam
    {
        set { eEnumParam = value; }
        get { return eEnumParam; }
    }
}

//FormのLoadイベントあたりで
PropertyGrid clsSomeGrid = new PropertyGrid();
clsSomeGrid.SelectedObject = new SomeClass();



引用返信 編集キー/
■63904 / inTopicNo.2)  Re[1]: PropertyGridでのGridアクションについて
□投稿者/ howling (18回)-(2012/10/26(Fri) 12:45:30)
すみません、今回だけでなく、いつも.NET全般で投稿してたんですね…。
次回以降はジャンルをC#にして投稿します。申し訳ありません…。

MFCなどでご回答頂いた場合でも参考になりますので、良いのですが。いやいや。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -