userControl не отрисовывается в tabPage

Пылесос
Дата: 22.12.2009 16:16:55
Создаю динамически новый TabPage делаю его Parent'ом для UserControl. Если в TabControl стоит отображение вкладок Top то все нормально. Как только меняю на Bottom код работает ошибок нет, но UserControl или не отрисовывается или отрисовывается частично. Refresh не помогает. Как победить подскажите? Нужно сделать используя стандартные средства. Спасибо.
Syrex
Дата: 22.12.2009 16:33:21
Попробуй сделать форме Size min, Size. Max (или какой-там у тебя размер)
Пылесос
Дата: 22.12.2009 16:45:24
Причем такой эффект когда стиль заголовка Buttons. Когда нормально все в порядке.(((((
Katapulta
Дата: 22.12.2009 16:49:30
А если вместо UserControl создать любой стандартный контрол, то баг повторяется?
Пылесос
Дата: 22.12.2009 18:42:07
Katapulta
А если вместо UserControl создать любой стандартный контрол, то баг повторяется?


Похоже что именно так все и есть.
Вот код
             ucCustomNE cucCustonNE = new ucCustomNE();
            TabPage tpcucCustonNE = new TabPage();
            cucCustonNE.Parent = tpcucCustonNE;
            tabControl1.TabPages.Add(tpcucCustonNE);
ZhV
Дата: 22.12.2009 19:21:29
Странно, что вообще что-то сработало :)

В вашем примере - просто добавление control-а пусть даже parent- недостаточно. Tabcontrol воспринимает как tabpage только контролы типа tabpage или его наследники. Любой иной тип - просто панелька, которая к тому же конкурирует за доступное для всех tabpages пространство


Порядок такой

1) создается control типа Tabpage или его наследник - newtabpage = new TabPage() ;
2) создается экземпляр вашего UserControl-а
3) это ваш контрол - добавляете на tabpage : newtabpage.Controls.Add(MyControl)
4) очень рекомендую после добавления ваш контрол сделать
MyControl.Dock = DockStyle.Fill;
5) и только после этого добавляйте созданную по п.(1) newtabpage на tabcontrol

не забывайте - вам "вручную" придется проставить индекс и title вашего newtabpage
Пылесос
Дата: 22.12.2009 21:53:30
ZhV,Спасибо большое!
Как говорится: век - живи, век-учись. :)
Пылесос
Дата: 22.12.2009 22:43:03
ZhV,
вот рано порадовался. Ваш код работает на ура, но вот только если заголовки вкладок внизу и стоит стиль - Кнопки - все равно не отображает он UserControl (((((((((((((((
ZhV
Дата: 22.12.2009 23:58:01
Пылесос
ZhV,
вот рано порадовался. Ваш код работает на ура, но вот только если заголовки вкладок внизу и стоит стиль - Кнопки - все равно не отображает он UserControl (((((((((((((((


Да. Точно

При такой вот комбинации (и только такой)
         this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons;
         this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom;    
Визуально поля всех вкладок очищаются - неважно - создана в дизайнере или динамически.
У меня есть run-time диагностика контролов , вот фрагмент по одной вкладке :
Name="tabPage2" Type="TabPage" X="4" Y="4" Width="548" Height="0" Visible="No"

С какого-то перепуга height всех вкладок сброшены в ноль и вкладка сделана невидимой !?
Ладно - может завтра гляну.
ZhV
Дата: 23.12.2009 20:15:55
Немножко поэкспериментировал. Так ничего и не понял

1)просто в дизайнере создал на форме tabcontrol
ZhV
При такой вот комбинации (и только такой)
         this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons;
         this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom;    


2) попытался создать tabpage - создается
3) попытался "положить" на tabpage простой label - "лежит"
4) при первом же F7 - исчезает; хотя в списке обьектов сущестует

Пути GDI неисповедимы :(