Как я ввожу пользовательский UITypeEditor для всех свойств типа с закрытым исходным кодом?

Потому что эти два понятия на самом деле не связаны.
Один представляет собой концепцию имен пакетов / модулей на языке Python, а другой - концепцию менеджера пакетов.

Посмотрите на простую команду упаковки с zip:

zip -r MyCoolTool.zip tool.py

Инструмент называется tool, что, вероятно, не является уникальным, и если вы не знаете, что это MyCoolTool, вы не знаете, какой [112 ] это. Когда я загружаю его куда-то, я называю его MyCoolTool, так что теперь у вас более уникальное имя, которое может быть немного более описательным.

Другой момент заключается в том, что пакет pip может включать в себя больше модулей, чем один. PyYAML может, например, включать второй модуль Python yaml2xml в дополнение к yaml.

Наконец, может быть несколько реализаций. PyYAML звучит как чистая реализация Python. Теперь предположим, что вам нужен действительно быстрый синтаксический анализатор, тогда вы можете запрограммировать CYAML на C-backend, но с тем же интерфейсом под именем yaml.

9
задан Colonel Panic 25 September 2012 в 15:56
поделиться

2 ответа

Обычно вы можете связать редакторов и т. Д. Во время выполнения с помощью TypeDescriptor.AddAttributes . Например (свойство Bar должно отображаться с «...», которое отображает «Редактирование!»):

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

class Foo
{
    public Foo() { Bar = new Bar(); }
    public Bar Bar { get; set; }
}
class Bar
{
    public string Value { get; set; }
}

class BarEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }
    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        MessageBox.Show("Editing!");
        return base.EditValue(context, provider, value);
    }
}
static class Program
{
    [STAThread]
    static void Main()
    {
        TypeDescriptor.AddAttributes(typeof(Bar),
            new EditorAttribute(typeof(BarEditor), typeof(UITypeEditor)));
        Application.EnableVisualStyles();
        Application.Run(new Form { Controls = { new PropertyGrid { SelectedObject = new Foo() } } });
    }
}
19
ответ дан 4 December 2019 в 09:38
поделиться

Просто добавьте атрибут редактора в свой класс.

0
ответ дан 4 December 2019 в 09:38
поделиться
Другие вопросы по тегам:

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