C# 关闭面板中的窗体并在同一面板中打开新窗体

C# Close a form in panel and open a new form in the same panel

有两种形式MainForm和HomePageForm。 HomePageForm 位于 MainForm 的面板内。主页表单有一个登录按钮。单击登录按钮时,我想在同一面板内关闭 HomePageForm 并打开 LoginForm。

MainForm.cs

private void MainForm_Load(object sender, System.EventArgs e)
{
    Homepage homepage = new Homepage()
    {
        Dock = DockStyle.Fill,
        TopLevel = false,
        TopMost = true
    };
    showForm(homepage);         
}

public void showForm(Form form)
{
    mainPanel.Controls.Add(form);
    form.Show();
}

Homepage.cs

private void Login_Click(object sender, System.EventArgs e)
{
    f1.ShowDialog();

    this.Hide();
    LoginForm loginForm = new LoginForm()
    {
        Dock = DockStyle.Fill,
        TopLevel = false,
        TopMost = true
    };
    MainForm mainForm = new MainForm();
    mainForm.showForm(loginForm);
}

这将关闭主页表单,但不会打开登录表单。

您不能创建 MainForm class 的实例并调用其方法,但您必须使用现有实例。要使用打开的表单,您必须找到带有程序名称的表单。

Login_Click 更改为:

private void Login_Click(object sender, System.EventArgs e)
{
    f1.ShowDialog();

    this.Hide();
    LoginForm loginForm = new LoginForm()
    {
        Dock = DockStyle.Fill,
        TopLevel = false,
        TopMost = true
    };
    MainForm mainForm = Application.OpenForms.OfType<MainForm>().Where(x => x.Name == "mainFormName").FirstOrDefault();
    mainForm.showForm(loginForm);
}

在行 Where(x => x.Name == "mainFormName") 中输入表单名称而不是 mainFormName。