У меня уже есть несколько детских форм, и я хотел бы показать их как детские. Я установил основную форму на mdi, и я могу правильно показать одну из форм как mdichild. Код, который меня беспокоит:
public partial class KeyboardSettingsForm : Form
{
private mainForm _mForm;
public KeyboardSettingsForm()
{
InitializeComponent();
_mForm = new mainForm(); //<---mdiparent
this.MdiParent = _mForm; //<---Commenting out this line shows the form
this.Shown += new System.EventHandler(this.KeyboardSettingsForm_Shown);
}
}
Я не уверен, почему, если я закомментирую: this.MdiParent = _mForm;
форма будет отображаться (но не как ребенок). Если оставить этот код нетронутым, форма не будет отображаться. Как мне сделать так, чтобы эта форма отображалась как ребенок?
Обновленный рабочий код
public partial class mainForm : Form
{
private NavigationForm _navForm;
public mainForm()
{
InitializeComponent();
this.Shown += new System.EventHandler(this.mainForm_Shown);
}
private void mainForm_Shown(object sender, EventArgs e)
{
_navForm = new NavigationForm(this);
_navForm.MdiParent = this;
_navForm.Show();
}
private void mainForm_Load(object sender, EventArgs e)
{
}
}
public partial class NavigationForm : Form
{
private KeyboardSettingsForm _wKeyboard;
public NavigationForm(Form frm)
{
InitializeComponent();
_wKeyboard = new KeyboardSettingsForm(frm);
}
private void NavigationForm_Load(object sender, EventArgs e)
{
}
private void keyboardPictureBox_Click(object sender, EventArgs e)
{
_wKeyboard.Show();
}
}
public partial class KeyboardSettingsForm : Form
{
private Form _mdiParent;
public KeyboardSettingsForm(Form frm)
{
InitializeComponent();
_mdiParent = frm;
this.MdiParent = frm;
this.Shown += new System.EventHandler(this.KeyboardSettingsForm_Shown);
}
private void KeyboardSettingsForm_Load(object sender, EventArgs e)
{
MessageBox.Show(_mdiParent.Name);
}
private void KeyboardSettingsForm_Shown(object sender, EventArgs e)
{
}
}