新演出前的表格关闭

本文关键字:表格 新演出 | 更新日期: 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();