2008-10-24 2 views
2

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

ответ

1

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

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

EDIT: Я только что видел, что Control имеет событие ControlAdded - вам будет достаточно подписки на это?

+0

Мне нужно ограничить добавление элементов управления в myControl на основе некоторого свойства. ControlAdded срабатывает после добавления нового элемента управления в родительский файл в местоположении 0,0. после чего он перемещает элемент управления в нужное положение. Если я удаляю этот новый элемент управления из родителя в EventHandler ControlAdded, возникает исключение. – Lalit 2008-10-24 13:15:53

3

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

+0

О, хорошо, я не знал об этом. Я думаю, что по-прежнему пытаюсь не требовать моего собственного ControlCollection, если это возможно, но это приятно знать, что это можно сделать :) – 2008-10-24 12:59:36

0

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