我已经设计了一堆mdichild表单,并希望将这些表单显示为mdichild。我将主表单设置为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;表单将显示(但不是作为一个mdichild)。如果代码完好无损,表单就会拒绝显示。我怎么才能把那张表格显示成一个小东西呢?
更新的工作代码
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)
{
}
}发布于 2013-09-03 14:28:35
您需要使mForm成为mdi容器:
mForm.IsMdiContainer = true;发布于 2013-09-03 14:36:19
您需要显式地显示主表单如下:
_mForm = new mainForm();
this.MdiParent = _mForm;
this.Shown += this.KeyboardSettingsForm_Shown;
_mForm.Show(); // show mdi-parent explicitly because only the application's start-up form shows automatically.发布于 2013-09-03 14:36:30
你是说谁是KeyboardSettingsForm的父母,但你在向父母展示什么?
_mForm = new mainForm(); //<---mdiparent not shown :(
this.MdiParent = _mForm;尝尝这个
_mForm = new mainForm();
_mForm.Show();//show your parent first
this.MdiParent = _mForm;但是即使在上面的代码也没有什么意义。你是故意这样做的吗?
public partial class KeyboardSettingsForm : Form
{
private mainForm _mForm;
public KeyboardSettingsForm(mainForm mForm)
{
InitializeComponent();
this._mForm = mForm;//Did you mean this?
this.MdiParent = _mForm;
this.Shown += new System.EventHandler(this.KeyboardSettingsForm_Shown);
}
}https://stackoverflow.com/questions/18594799
复制相似问题