Переопределение Управляет свойством панели в C # - PullRequest
2 голосов
/ 24 октября 2008

Я должен переопределить метод Add свойства «Controls» myControl, который расширен из панели управления Windows. Для этого я расширил класс ControlCollection в MyControlCollection, где переопределил его метод Add. Теперь я объявил свойство Controls типа MyControlCollection, чтобы скрыть свойство Controls панели. Когда я обращаюсь к this.Controls.Add (control), это относится к переопределенному методу Add. Но если я перетаскиваю элемент управления на myControl, поведение имеет метод Add базового типа. Может ли какой-либо орган предложить причину и способ устранения этой проблемы? Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 24 октября 2008

Вместо этого вы можете переопределить функцию CreateControlCollection и вернуть экземпляр выбранного вами класса, который наследует System.Web.UI.ControlCollection. Удалите свойство Controls из своего класса, вам не нужно переопределять или скрывать исходную реализацию.

1 голос
/ 24 октября 2008

Причина в том, что дизайнер вызывает Control.Controls, а не обращается к вашей отдельной коллекции. Если честно, ваше решение звучит так, как будто оно предназначено для того, чтобы вызывать проблемы - обычно это делают скрывающиеся участники.

Чего именно вы пытаетесь достичь? Не похоже, что в ControlCollection есть приятное событие, но может быть другой способ решения проблемы.

РЕДАКТИРОВАТЬ: Я только что видел, что Control имеет событие ControlAdded - достаточно ли подписаться на это?

0 голосов
/ 24 октября 2008

На самом деле я должен ограничить добавление элементов управления в моем контроле, если некоторые флаги верны. Я использовал это событие ControlAdded, но оно только добавило проблем. ControlAdded срабатывает только после добавления элемента управления that в родительский элемент в расположении 0, 0. После вызова этого события он перемещает элемент управления в соответствии с положением мыши во время отбрасывания. Если я удаляю этот новый элемент управления из родительского элемента в исключении EventHandler ControlAdded.

...