首先这是我在主窗体的panel中插入另一个窗体的方法
private void TSM_Setting_Click(object sender, EventArgs e)
{
SettingUC settingUC = new SettingUC(this);//这就是子窗体
ShowForm(settingUC);
}
/// <summary>
/// 展示子窗体,如果控件列表中已有,直接展示,没有就添加到panel的控件中
/// </summary>
/// <param name="form">子窗体</param>
private void ShowForm(Form form)
{
bool flag = true;
foreach (var f in panel2.Controls)
{
if (f is Form)
{
Form oldForm = (Form)f;
if (oldForm.Name == form.Name)
{
flag = false;
oldForm.Show();
}
else
{
oldForm.Hide();
}
}
}
if (flag)
{
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.WindowState = FormWindowState.Normal;
form.Anchor = AnchorStyles.None;
form.Dock = DockStyle.Fill;
panel2.Controls.Add(form);
form.Show();
}
}
调试的时候发现,怎么子窗体不随着主窗体尺寸变化而变化,明明已经设置了Dock=fill,到处查找都没有结果
后来发现是我一开始错误设置了窗体的WindowState
form.WindowState = FormWindowState.Maximized;//错误
就是这个导致窗体不会变化的,必须改为:
form.WindowState = FormWindowState.Normal;
希望也能帮助到同样遇到这个问题的你。