打开子窗体使 UI 控件被重置
Opening child form makes that the UI controls get reset
我是 windows 表单的初学者,我在打开子表单时遇到了一些问题。
我的应用程序有 2 个按钮,一个转到主菜单,另一个转到选项。
问题是,如果我单击选项菜单中的复选框并离开选项选项卡并返回,则不会再选中该复选框。
这是我的代码:
private Form CurrentChildForm;
private void OpenChildForm(Form childForm)
{
if(CurrentChildForm != null)
{
CurrentChildForm.Visible = false;
}
CurrentChildForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
PanelForForm.Controls.Add(childForm);
PanelForForm.Tag = childForm;
childForm.BringToFront();
childForm.Show();
}
private void MainMenu_Click(object sender, EventArgs e)
{
OpenChildForm(new MenuForm());
}
private void OptionsMenu_Click(object sender, EventArgs e)
{
OpenChildForm(new OptionsForm());
}
通过不同按钮上的点击事件,您总是在创建表单的新实例。
一个可能的解决方案是缓存你的 optionsMenu 实例,例如通过私有字段,因为我认为它是 SingleInstance。
private Form CurrentChildForm;
private OptionsForm _opForm;
private void OptionsMenu_Click(object sender, EventArgs e)
{
if (_opForm == null)
{
_opForm = new OptionsForm();
}
OpenChildForm(_opForm);
}
我是 windows 表单的初学者,我在打开子表单时遇到了一些问题。
我的应用程序有 2 个按钮,一个转到主菜单,另一个转到选项。
问题是,如果我单击选项菜单中的复选框并离开选项选项卡并返回,则不会再选中该复选框。
这是我的代码:
private Form CurrentChildForm;
private void OpenChildForm(Form childForm)
{
if(CurrentChildForm != null)
{
CurrentChildForm.Visible = false;
}
CurrentChildForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
PanelForForm.Controls.Add(childForm);
PanelForForm.Tag = childForm;
childForm.BringToFront();
childForm.Show();
}
private void MainMenu_Click(object sender, EventArgs e)
{
OpenChildForm(new MenuForm());
}
private void OptionsMenu_Click(object sender, EventArgs e)
{
OpenChildForm(new OptionsForm());
}
通过不同按钮上的点击事件,您总是在创建表单的新实例。
一个可能的解决方案是缓存你的 optionsMenu 实例,例如通过私有字段,因为我认为它是 SingleInstance。
private Form CurrentChildForm;
private OptionsForm _opForm;
private void OptionsMenu_Click(object sender, EventArgs e)
{
if (_opForm == null)
{
_opForm = new OptionsForm();
}
OpenChildForm(_opForm);
}