2010-11-18 8 views
0

)。プロパティ・グリッドから呼び出すときにポップアップ・エディタが表示されるデフォルト・サイズをどのように設定できますか。PropertyGridの既定のポップアップエディタの起動サイズ(WinForms)を設定します。

これは、Windowsフォームのプロパティグリッドエディタに精通しているすべての方にお勧めです。

ListプロパティをGridにスローすると、小さな[...]ボタンが表示されます。このボタンを押すと、デフォルトのサブ値エディタがポップアップします。私は実際に別の種類のオブジェクトにエディタを使用しますが、私はこの例を与えて、私が何を参照しているかを知っています。そして、ここにリンクが住んで少なくともまで、絵だ:

http://www.perpetuumsoft.de/sf/en/ims/rssSilverlight/GetStart/image032.jpg

答えて

1

私の理解では、(両方のモーダルおよび非モーダル編集者のために)それが示されているコントロールの気まぐれまで完全にであるということです。関与UITypeEditorは大きなフォームを選択した場合、それは大きなだろう...それを変更する

唯一の方法は、UITypeEditor独自に定義し、関連するタイプと関連付けることであろう(時々可能TypeDescriptor.AddAttributes(...)と、それが作成されますランタイムが見せたかったが、表示する前に、それをリサイズすると同じ形。

+0

こんにちはマルクであなたのコレクションのプロパティを飾るだろう例です。回答ありがとうございます。このプロパティグリッドは私の神経に乗っています。私は、デフォルトのエディタを少しでもカスタマイズできるようにするために、小さなプロパティやコールバックを提供するだけで何かをコード化する必要があるということは嫌です。上の画像でわかるように、私たちはポップアップエディタでどのようなオブジェクトを表現しているのかを示す新しいインスタンスを作成する「追加」ボタンを持っています。私を殺すのは、そのコンストラクタのMAINオブジェクトへの参照を取得しないということです(次にモーダルUIが呼び出された場所からのもの)。 Arrrrgh !!! – Axonn

+0

Marc、他の問題についてご存じですか?あなたが知っている... "Add"をクリックしたときにPropertyGridオブジェクトが作成されると、問題のオブジェクトでパラメータのないコンストラクタが呼び出されます。そこの元のオブジェクトへの参照をどのように取得できますか? ITypeDescriptorContextは使用されていません:: - ( "Instance"フィールドは現在編集中のPropertyを指していますが、私はそのプロパティの**所有者**にアクセスできません。 – Axonn

+0

私はそうは思いません: -/ – Axonn

0

あなたは、標準System.ComponentModel.Design.CollectionEditorから継承することによってこれを達成し、その後CreateCollectionFormオーバーライドで希望のサイズを設定することができます。

飾りますよurコレクションを使用してカスタムコレクションエディタを使用します。以下 は

class FullscreenCollectionEditor : System.ComponentModel.Design.CollectionEditor 
{ 
    protected override CollectionForm CreateCollectionForm() 
    { 
     var editor = base.CreateCollectionForm(); 
     editor.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
     return editor; 
    } 

    public FullscreenCollectionEditor(Type type) : base(type) 
    { 
    } 

} 

フルスクリーンでコレクションエディタを起動し、その後、[Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))]すなわち

public class MyModel 
{ 

    [Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))] 
    public List<FileModel> Files { get; set; } 

}