Запретить унаследованный TabControl для создания TabPages - PullRequest
0 голосов
/ 03 мая 2018

Я создаю пользовательский TabControl

public class CtlTabs : System.Windows.Forms.TabControl
{
    ...
}

Я могу вставить это унаследованное CtlTabs в режиме разработки из окна панели инструментов.

Однако, когда я перетаскиваю это в форму, по умолчанию создается 2 TabPages Есть ли способ предотвратить это?

Я попытался переопределить OnControlAdded(), но безуспешно.

    protected override void OnControlAdded(ControlEventArgs e)
    {
        // base.OnControlAdded(e);
    }

Я также пытался CtlTabs.TabPages.Clear(); в событиях HandleCreated / ControlAdded.

Дополнительная информация: Для этого унаследованного TabControl каждый TabPage создается динамически на лету, и он устанавливает данные объекта в TabPage.Tag. Итак, эти два изначально созданных TabPages бесполезны.

Конечно, пока что обходной путь - добавить / перетащить элемент управления и вручную удалить начальные вкладки. Мне просто интересно, есть ли способ, которым я могу предотвратить это.

1 Ответ

0 голосов
/ 03 мая 2018

Новые вкладки создаются дизайнером. Любое переопределение в коде времени выполнения (унаследованном TabControl) не поможет. Вам нужно указать свой собственный дизайнер или "понизить рейтинг" с TabControlDesigner до ControlDesigner.

Понижение рейтинга довольно просто:

[Designer("System.Windows.Forms.Design.ControlDesigner, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public class MyTabControl : TabControl {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...