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。
有两种形式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。