新演出前的表格关闭
本文关键字:表格 新演出 | 更新日期: 2023-09-27 17:56:50
您好,我正在使用Visual Studio在C#中制作我的第一个Windows Forms应用程序,我遇到了一个小问题。
当我打开一个新窗体并关闭上一个窗体时,当我运行应用程序时,它看起来像是在打开新窗体之前关闭了以前的窗体。它看起来不太好,我想避免它。
UserPanel MDIUserPanel = new UserPanel(Username);
MDIUserPanel.MdiParent = this.MdiParent;
MDIUserPanel.Show();
this.Close();
我不知道出了什么问题。我将感谢任何帮助。
沃斯问候,DarQScreaM
@Edit
实际上似乎并非如此。大概是:
我有 3 种表单主表单、登录、登录用户。
MainForm 是 MDI 容器,其中 FormBorderStyle 设置为固定单登录名是 MainForm 的子级,FormBorderStyle 设置为"无"LoggedUser 是 MainForm 的子项,FormBorderStyle 设置为 None
运行应用程序时,将在主窗体中创建登录表单。MainForm 自其容器以来从未关闭过。
但是当我从登录表单移动到 LoggedUser 表单时,反之亦然,它使用 FormBorderStyle = 固定单个(普通窗口窗口)创建,并在 0.5~秒后变为无。
将其编辑成并没有真正的帮助:
MDIUserPanel.FormBorderStyle = FormBorderStyle.None;
MDIUserPanel.Show();
@Edit2
此更改为我修复了它。我不知道为什么在表单属性上设置它无法正常工作。看起来表单被创建为 FormBorderStyle.FixedSingle,然后它被更改为 FormBorderStyle.None。如果我在加载中手动执行此操作,它可以工作,但 U 也必须修复我的窗口大小。不过似乎不太好。它应该从一开始就工作,因为设计器中的窗体属性从一开始就是这样的。
private void UserPanel_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.Size = new Size(649, 357);
}
您可以使用窗体的 Display(已显示)事件来确保在关闭旧窗体之前已显示新窗体。
UserPanel MDIUserPanel = new UserPanel();
MDIUserPanel.Shown += ((s, ee) =>
{
this.Close();
});
MDIUserPanel.Show();
如果您尝试关闭的此窗体是运行应用程序时打开的主窗体,那么这就是原因。关闭主窗体将退出您的应用程序。相反,请尝试仅隐藏此窗体而不是关闭它。为了确保您可以退出应用程序(因为您隐藏了主窗体),只需覆盖当前窗体的关闭事件,并在其中放置"Application.Exit()"。希望这对您有所帮助!
第一步: this.Hide();
第二步: MDIUserPanel.Show();