Пользовательский конструктор для элемента управления - PullRequest
5 голосов
/ 09 февраля 2010

У меня есть собственный класс, производный от SplitContainer:

namespace Builder.Components
{
    public partial class ProjectSidebar : SplitContainer
    {
        public ProjectSidebar()
        {
            InitializeComponent();
        }
    }
}

Теперь, когда я щелкну правой кнопкой мыши и выберу View Designer Я бы хотел увидеть SplitContainer и отредактировать его, как если бы я использовал стандартные элементы управления (перетащите панель в него и т. Д.). Все, что я вижу, - это сообщение о добавлении элементов управления и переключении на Представление кода .

Как этого добиться?

Ответы [ 3 ]

9 голосов
/ 09 февраля 2010

Чтобы добавить функциональные возможности времени разработки, такие как дополнительные операции (известные как Списки действий и глаголы, в зависимости от того, как они предоставляются), или перетаскивание визуальных элементов, таких как заголовки или разделенные панели, необходимо реализовать собственный конструктор (обычно производный от ControlDesigner), что позволяет конструктору Windows Forms понимать, как взаимодействовать с вашим пользовательским элементом управления во время разработки.

MSDN имеет длинный раздел о добавлении поддержки во время разработки для ваших элементов управления. Он описывает все: от преобразователей типов до поставщиков расширений и дизайнерская сериализация до дизайнерская настройка .

Дополнительные ресурсы

Эта статья о CodeProject содержит информацию о создании дизайнеров для пользовательских элементов управления. Есть также несколько полезных советов здесь и в этот другой вопрос StackOverflow .

3 голосов
/ 09 февраля 2010

Только классы Form и UserControl имеют конструкторы, которые позволяют редактировать их дочерние элементы управления во время разработки. Создать свой собственный конструктор, чтобы обеспечить SplitContainer такое же поведение, не совсем просто, прежде всего потому, что он плохо документирован и труден для отладки. Вам нужно изучить код фреймворка с помощью Reflector, чтобы понять его правильно.

Уберите эту проблему, поместите SplitContainer в пользовательский элемент управления. Установите для свойства Dock значение Fill. Теперь это просто.

1 голос
/ 09 февраля 2010

При написании элемента управления необходимо обязательно добавить к нему логику времени разработки.

См. эту (.NET 1.0) статью о MSDN для получения дополнительной информации. Здесь - еще одна статья 2003 года.

...