Как заставить PropertyGrid показывать настраиваемый диалог для определенного свойства?

В отношении несвязанной задачи я недавно поднял нашу базу данных MySQL в MySQL Workbench , а при просмотре табличных отношений для приведенных выше таблиц я заметил «дубликаты» и / или ложные отношения, которые у меня были как-то пропустили раньше (они не появлялись в PHPMyAdmin FWIW). Удаление этих дополнительных отношений немедленно устранило проблему.

11
задан Community 23 May 2017 в 11:59
поделиться

1 ответ

Необходимо установить [Editor(...)] для свойства, давая ему a UITypeEditor это делает редактирование; как так (с Вашим собственным редактором...)

using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;


static class Program
{
    static void Main()
    {
        Application.Run(new Form { Controls = { new PropertyGrid { SelectedObject = new Foo() } } });
    }
}



class Foo
{
    [Editor(typeof(StringEditor), typeof(UITypeEditor))]
    public string Bar { get; set; }
}

class StringEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }
    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        IWindowsFormsEditorService svc = (IWindowsFormsEditorService)
            provider.GetService(typeof(IWindowsFormsEditorService));
        if (svc != null)
        {
            svc.ShowDialog(new Form());
            // update etc
        }
        return value;
    }
}

Вы могли бы быть ablt для разыскивания существующего Редактора путем рассмотрения существующих свойств, которые ведут себя как Вы, хотят.

17
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: