C# Winform 关闭程序后进程仍在Windows任务列表管理器中

2024-01-12

为什么关闭程序后该进程仍在Windows任务列表管理器中?

我使用登录Form.cs

 [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Login());
        }

用户成功登录后,我重定向到另一个母版页

 this.Hide();
            Main_Usr oMainUsr = new Main_Usr();                    
            oMainUsr.Visible = true;

我的伪母版页是这样的:

public Main_Usr()
        {
            InitializeComponent();
            this.IsMdiContainer = true;
        }

当我关闭母版页时,该进程仍在 Windows 任务列表管理器上。 但是当我关闭登录页面时,它会终止 Windows 任务列表管理器上的进程。

这是因为我只是隐藏了登录页面吗? 我必须关闭所有窗口才能真正退出/终止该进程吗?

预先感谢您, 斯蒂夫


在 winforms 中,当主应用程序表单关闭时,进程将被终止。主应用程序表单是在 Application.Run 调用中指定的一种。在您的情况下,它是登录表单:

Application.Run(new Login());

要关闭表格,您应该致电Close方法。你打电话时Hide or set Visibility如果是假的,形式就会留在记忆中。它只是对用户隐藏。

因此,为了实现所需的功能,您应该将主应用程序表单更改为 Main_Usr:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Main_Usr()); // change main form
}

然后订阅LoadMain_User 表单的事件。并在事件处理程序中执行以下操作:

private void Main_User_Load(object sender, EventArgs e)
{
    using (var loginForm = new Login())
    {
        Hide(); // hide main form

        if (loginForm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
        {
            Close(); // close main form and kill process
            return;
        }

        Show(); // show main form if user logged in successfully 
    }
}

更新:您可以在 Main 方法中完成这一切,就像这样

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    using(var loginForm = new Login())
         if (loginForm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
             return;
    Application.Run(new Main_Usr()); // change main form
}

但通常我不会隐藏主表单并将其显示在登录表单下方。所以,在这种情况下你应该使用Load事件处理程序。由你决定。

顺便说一句,winforms 中没有母版页和页面。这一切都是针对 ASP.NET 的。这里有表格:) 还要考虑诸如 LoginForm、MainForm 等命名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# Winform 关闭程序后进程仍在Windows任务列表管理器中 的相关文章

随机推荐

  • Cassandra 中的列排序

    当我在 CQL 中创建表时 是否需要精确确定列的顺序NOT在主键和NOT聚类列 CREATE TABLE user a ascii b ascii c ascii PRIMARY KEY a 它相当于吗 CREATE TABLE user
  • Glide - 向请求添加标头

    有没有一种方法可以在下载图像时添加自定义标头以进行请求 我可以在 Glide 中使用 volley 或 okhttp 我尝试在okhttpclient中的cookiemanager中添加cookie 但没有帮助 Glide 中有调试请求响应
  • ApplicationInsight 导致网站在启动时挂起

    目前有人成功使用 ApplicationInsight 吗 我除了试图让它发挥作用之外什么也没遇到 首先 我遇到了很多问题 VS 拒绝使用 ApplicationInsight 创建新网站以及将 ApplicationInsight 添加到
  • Oracle 中的限定子句

    我正在从事 Teradata 到 Oracle 的迁移项目 我如何修改在 Teradata 中使用 QUALIFY 的以下查询 查询1 SELECT S ID as Id S MP CD as Code S GM CD as GmCode
  • 为什么我的函数没有按预期在文档加载时运行?

    这段代码应该设置元素的高度 但是没有添加任何样式 我错过了一些明显的东西吗 function setGround document getElementById content style height 40px document onlo
  • 如何在 Nginx 中使用 .htaccess 文件?

    我目前正在将我的网站从 Apache 迁移到nginx 但是我的 htaccess文件不工作 我的网站位于 usr share nginx html mywebsite文件夹 我该如何使用 htaccess in my nginx serv
  • 我可以告诉绑定重定向始终使用最新的可用版本吗?

    有一个 ASP NET 应用程序severalWeb Config 文件中的条目采用以下格式
  • 为什么 grails 操作应该声明为方法而不是闭包,这有什么区别?

    Grails 2 0 中的新增内容http grails org doc 2 0 0 RC1 guide introduction html whatsNew http grails org doc 2 0 0 RC1 guide intr
  • 如何设置SWT按钮前景色?

    SWT Button 类有一个setForeground Color 方法 但它似乎没有效果 该方法实际上是在 Button 的超类上 javadoc 说这个方法是一个提示 可能会被平台覆盖 我的平台是Windows 这是否意味着无法在 W
  • 将字符串转换为 int (但前提是确实是 int)

    在大学里 我被问到我们的程序是否检测到从命令行参数输入的字符串是否是一个整数 但它没有检测到 Program 3 7 现在我想知道如何检测到这一点 因此输入例如aatoi 检测到的无效 但输入例如3 6应该是无效的 但 atoi 会将其转换
  • Ruby on Rails 显示带有 image_tag src 的图像

    我的里面有一张图片app assets images文件夹 我在视图页面中尝试显示图像 当我在本地主机中加载页面时 我的图像仅显示 assets 在其 src 路径中 img alt Assets src assets 我不明白为什么会出现
  • 如何更改 EKS 中 kube-scheduler 的行为?

    我是 Kubernetes 新手 对设置它完全陌生EKS 我正在努力实现共享GPU在多个 Pod 之间 但是为了查看一些文档和文章 我发现我应该更新kube scheduler configuration带有参数 然后我可以进行必要的更改以
  • 未找到自制程序的 gpg-agent

    我正在尝试安装gpg agent 但我收到一个错误 该公式不存在 brew install gpg agent Error No available formula with the name gpg agent gt Searching
  • 将 RichTextBox 中的制表符转换为空格

    I have a WinForms application with a RichTextBox control on the form Right now I have the AcceptsTabs property set to tr
  • R 中的 Predict.lm() - 如何获得拟合值周围的非常量预测带

    所以我目前正在尝试绘制线性模型的置信区间 我发现我应该为此使用 Predict lm 但我在真正理解该函数时遇到一些问题 并且我不喜欢在不知道发生了什么的情况下使用函数 我找到了几个关于这个主题的操作方法 但只有相应的 R 代码 没有真正的
  • Nunjucks 中的 Javascript 函数

    所以我在 Nunjucks 文档中找到了这个 函数调用 如果您已将 JavaScript 方法传递给模板 则可以像平常一样调用它 foo 1 2 3 但我似乎无法工作 我尝试将我的函数放在 html 页面上
  • 选择文件夹对话框 WPF

    我开发了一个 WPF4 应用程序 在我的应用程序中 我需要让用户选择一个文件夹 应用程序将在其中存储某些内容 文件 生成的报告等 我的要求 能够查看标准文件夹树 能够选择文件夹 WPF 外观和感觉 此对话框必须看起来像为 Windows V
  • 在 R 版本 3.0.2 上安装 Rtools

    我已经安装了devtools对于 R 但是当我使用以下命令调用库时 library devtools 我得到以下输出 WARNING Rtools is required to build R packages but is not cur
  • 使用vba将文件从一个文件夹复制到另一个文件夹

    我知道有一些关于这个主题的类似帖子 但是 我有一个与我在这里看到的所有代码 在谈论这个主题时 不同的代码 我收到的错误是找不到该文件 但这是不可能的 因为我正在 fso CopyFile 中用作 SOURCE 的同一文件夹中搜索文件 所以我
  • C# Winform 关闭程序后进程仍在Windows任务列表管理器中

    为什么关闭程序后该进程仍在Windows任务列表管理器中 我使用登录Form cs STAThread static void Main Application EnableVisualStyles Application SetCompa