Я динамически назначаю форму (называемую «псевдо-вкладкой») для 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, но элементы управления, которые я добавилк странице формы / псевдо-тега во время разработки не отображаются во время выполнения - почему?