打开子窗体使 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);
}