2009-09-22 8 views
3

Я хочу создать собственный пользовательский элемент управления, который в основном представляет собой TableLayoutPanel с 3 строками и 1 столбцом. Верхняя и нижняя строки будут содержать метки (баннеры), а средняя строка - там, где я буду добавлять другие элементы управления. Проблема в том, что когда я пытаюсь создать другие элементы/элементы управления из этого элемента управления, дизайнер не распознает среднюю панель. Как мне это получить? Если я перетаскиваю текстовое поле в середину и устанавливаю Dock = Fill, он будет закрывать форму/управление entrie. Кроме того, есть ли способ заставить дизайнера отклонить перетаскивание элементов управления в верхние и нижние (баннерные) строки? Я пробовал шаги по следующей ссылке, но не повезло (http://support.microsoft.com/?scid=kb%3Ben-us%3B813450&x=21&y=15).Как создать панель баннера в C#?

ответ

3

Я понял. Хитрость заключалась в создании моего собственного конструктора, который наследует от ParentControlDesigner и переопределяет метод Initialize и вызывает EnableDesignMode для внутренней панели содержимого. Кроме того, мне нужно было установить атрибут Designer моего пользовательского элемента управления для этого нового дизайнера. Подробности показаны here.

Одна проблема, однако. Я могу перетащить элементы управления на панель содержимого, которую я создал, и все выглядит отлично. Но, как только я перекомпилирую, элементы управления исчезают. Они все еще там, я просто думаю, что их рисуют перед панелью баннеров. Я создам отдельный поток для этой проблемы.