0

PropertyGrid を使用して、リスト パラメーターをクリックすると開くコレクション エディターをモーダルではなくモードレスにするにはどうすればよいですか?

4

1 に答える 1

0

新しいタイプの CollectionEditor を作成します。

public class SmartCollectionEditor : CollectionEditor
{

'EditValue' フォームをオーバーライドして、モーダルではなくモードレスでコレクション フォームを開き、変更がすぐに有効になるため、承認ボタンとキャンセル ボタンを削除します。

public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
        CollectionForm collectionForm = base.CreateCollectionForm();
    collectionForm.EditValue = value;
    (collectionForm.AcceptButton as Button).Visible = false;
    (collectionForm.CancelButton as Button).Visible = false;
    collectionForm.Show();
    return value;
}

これを使用するタイプを、PropertyGrid で開くようにする属性でマークします。

TypeDescriptor.AddAttributes(typeof(List<MyType>), new EditorAttribute(typeof(SmartCollectionEditor), typeof(UITypeEditor)));
于 2015-10-06T21:41:01.350 に答える