Как заполнить List-свойство во время разработки? - PullRequest
1 голос
/ 04 декабря 2011

У меня есть такой компонент:

public partial class FontScalingManager : Component
{
    ...other stuff...

    /// <summary>
    /// List of Controls, which get their Font scaled
    /// </summary>
    [ListBindable(BindableSupport.Yes),
    Description("List of Controls, which get their Font scaled")]
    public List<Control> ScalingControls
    {
        get { return _scalingControls; }
    }
}

Итак, после удаления этого компонента в форме, я хочу заполнить этот список в конструкторе. Я бы предпочел сделать это вручную в конструкторе с UITypeEditor или чем-то, выбрав некоторые элементы управления в форме.

Таким образом, дизайнер автоматически предоставляет мне редактор для добавления новых элементов управления в этот список, так как мне сказать, что я хочу выбрать из всех существующих элементов управления?

Могу ли я установить что-то для этого редактора или мне нужен пользовательский?

Мы ценим любую помощь.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2011

Интерфейс IExtenderProvider был создан для этого. Компонент .NET HelpProvider был реализован таким образом. Обратите внимание, как он добавляет свойства к другим элементам управления в той же форме. Используйте пример в статье библиотеки MSDN, чтобы получить базовые рекомендации по его правильной реализации.

0 голосов
/ 04 декабря 2011

Элементы управления имеют свойство Tag.Установите тег «масштабирование» для элементов управления масштабированием.Затем определите элементы управления масштабированием при первом обращении к ним:

private List<Control> _scalingControls;
public List<Control> ScalingControls
{
    get
    {
        if (_scalingControls == null) {
            _scalingControls = new List<Control>();
            foreach (Control c in frm.Controls) {
                if ((string)c.Tag == "scaling") {
                    _scalingControls.Add(c);
                }
            }
        }
        return _scalingControls;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...