Переопределение коллекции элементов управления в WebControl - PullRequest
2 голосов
/ 16 апреля 2009

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

protected override ControlCollection Controls
{
    EnsureChildControls();
    return this._panel.Controls;
}

Однако, когда я делаю это, состояние представления дочерних элементов управления по какой-то причине не поддерживается. Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 16 апреля 2009

ViewState - это граф объектов, который построен параллельно дереву элементов управления, поэтому изменения такого рода обычно имеют побочные эффекты, которые вы описываете. Можно утверждать, что вы по сути угоняете объект Controls и придаете ему другое значение, которое на самом деле не является намерением переопределить. Скорее, переопределение предназначено для обеспечения другого механизма для достижения того же значения или намерения. «Дочерние элементы управления одного из моих детей» - это не то же самое, что «Мой дочерний элемент управления» .

Есть лучшие способы выполнить то, что вы описываете. Можно было бы явно указать свойство вашего элемента управления, к которому пользователи «области» должны добавить свои элементы управления. Если предполагается, что это сложный элемент управления, имеющий одну настраиваемую область, то предоставьте эту область как таковую.

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