Могу ли я добавить код в конструктор по умолчанию и другую дилемму - PullRequest
0 голосов
/ 23 марта 2012

Я динамически назначаю форму (называемую «псевдо-вкладкой») для tabcontrol.

Я делал это так:

// Основная форма, котораяимеет TabControl во время разработки:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    int TabControlWidth = tabPageBasicInfo.Size.Width;
    int TabControlHeight = tabPageBasicInfo.Size.Height;

    if (e.Node.Name == "NodeWhatever")
    {
        BasicInfoPseudoTab bipt = new BasicInfoPseudoTab(TabControlWidth, TabControlHeight);
        tabPageBasicInfo.Controls.Add(bipt);
        bipt.Show();
    }
    // else NodeThis, NodeThat
}

// Конструктор в форме, которая является «псевдо-вкладкой»:

// overloaded constructor, passing in the dimensions of the tab page
public BasicInfoPseudoTab(int ATabPageWidth, int ATabPageHeight) 
{
    this.TopLevel = false;
    this.FormBorderStyle = FormBorderStyle.None;
    this.Width = ATabPageWidth;
    this.Height = ATabPageHeight;
    this.Visible = true;
}

... но затем я экспериментировал с настройкойсвойство Dock:

public BasicInfoPseudoTab(int ATabPageWidth, int ATabPageHeight) 
{
    this.TopLevel = false;
    this.FormBorderStyle = FormBorderStyle.None;
    //this.Width = ATabPageWidth;
    //this.Height = ATabPageHeight;
    this.Visible = true;
    this.Dock = DockStyle.Fill;         
}

... и оно прекрасно работает, поэтому я подумал, что просто воспользуюсь конструктором "in the box", удалив два аргумента.Однако это недопустимо, так как get: «Type 'UserControlsOnTabPagePOCApp.BasicInfoPseudoTab' уже определяет член с именем BasicInfoPseudoTab с теми же типами параметров»Свойство TopLevel, оно выдавало мне сообщение об ошибке, пока я не переместил его в конструктор).

Что мне нужно сделать, чтобы переопределить (а не перегрузить) конструктор, или какое другое событие я должен использовать (делаетчто-нибудь предшествует событию Load ()?)

ТАКЖЕ (я не хотел помещать один и тот же код в два разных вопроса): сама форма отлично отображается в TabControl, но элементы управления, которые я добавилк странице формы / псевдо-тега во время разработки не отображаются во время выполнения - почему?

1 Ответ

2 голосов
/ 23 марта 2012

Дело не в переопределении конструктора (конструкторы в любом случае не такие полиморфные), а в том, что конструктор уже существует.Я бы ожидал , что он уже присутствует в вашем коде - что-то вроде этого:

public BasicInfoPseudoTab()
{
    InitializeComponent();
}

Вы можете редактировать этого конструктора, вместо того, чтобы объявлять другой без параметров,Обратите внимание, что ваш другой конструктор должен либо соединиться с ним, либо вызвать InitializeComponent(), чтобы весь код дизайнера мог делать свое дело.

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