Перемещение во время разработки дочернего элемента управления, принадлежащего составному пользовательскому элементу управления - PullRequest
0 голосов
/ 18 декабря 2009

У меня есть пользовательский элемент управления Windows Forms, который (по разным причинам, не относящимся к этой проблеме) отображается в конструкторе, как панели в разделенной панели. Почти все работает хорошо, за исключением перетаскивания элемента управления. Дочерние элементы управления создаются пользовательским элементом управления, и он не принимает новых дочерних элементов. Цель состоит только в том, чтобы разрешить редактирование свойств предопределенных дочерних элементов.

Поскольку элемент управления позволяет создавать дочерние элементы управления, их также можно выбрать в конструкторе (это хорошо, и я не хочу это менять). Однако они не могут и не должны перемещаться индивидуально.

Я хотел бы, чтобы при перетаскивании дочернего элемента управления в конструкторе перетаскивание фактически перемещало родителя.

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

1 Ответ

0 голосов
/ 18 декабря 2009

Попробуйте и скажите мне, что происходит:

  1. Расширение класса UserControl
  2. Определить новый класс ControlDesigner, производный от класса конструктора UserControl по умолчанию (я думаю, UserControlDocumentDesigner)
  3. В этом конструкторе напишите это внутри переопределения метода initialize:

    IComponentChangeService changeService = this.GetService (typeof (IComponentChangeService)); changeService.ComponentRemoved + = new ComponentEventHandler (changeService_ComponentRemoved);

теперь вы можете размещать логику о том, что происходит при удалении элемента управления. Помните, что не только элементы управления, удаленные из вашего пользовательского элемента управления, будут запускать это событие. Вы должны проверить это, а также не забыть о событиях ComponentChanging и ComponentChanged, чтобы заставить мысли нормально работать во время разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...