【问题标题】:Close another form to C#关闭另一个窗体到 C#
【发布时间】:2011-12-26 15:38:51
【问题描述】:

我有 2 个窗体、1 个登录窗体和 1 个主窗体。我想一起关闭主表单和登录表单。我该怎么办?

我试过这个命令;

Form2 ac = new Form2();
ac.Show();
this.Close();

但这会关闭所有表格。我只想关闭Form1

【问题讨论】:

  • 首先你说你想同时关闭主窗体和登录窗体,然后你说你只想关闭Form1(但代码说Form2)。这个问题很不清楚。
  • @AhmedMasud 我将此代码写入 Form1_Load
  • @Sircade 请展示整个例程
  • @P.Brian.Mackey 我的英语不太好,抱歉。 :)
  • @Sircade - 提供更多相关代码。由于语言障碍,我们更有机会了解您的需求。

标签: c# coding-style


【解决方案1】:

如果您的 Main 方法包含:

  Application.Run(form1);

而您正在关闭form1,您的应用程序将关闭。

您可以在显示 ac 时“临时”隐藏 form1。使用 ShowDialog,在 ac 表单关闭之前阻止您的代码:

   using (Form2 ac = new Form2()) {
     this.Hide();
     if (ac.ShowDialog() == DialogResult.OK) {
       this.Show();
     } else {
      // Exit app
       this.Close();   
     }
   }

【讨论】:

    【解决方案2】:

    如果你关闭主窗体当然所有的窗口都会关闭,主窗体包含所有其他 表格,你的Q不清楚,能不能给我们一个清晰的sn-p,显示你想做什么?

    【讨论】:

    • 第一个 form1 和 form2(visible=false),他们输入用户名和密码,按 Enter 并转到 form2(visible=true now)。 (现在我要关闭 form1)-
    • form1 是您的主要表单吗?编辑:我想我明白了...(希望如此)我认为您将主表单与子表单混合在一起,您的主表单是您输入用户名和密码的地方,而您的子表单是您想要继续的地方吗?
    • Form1 = Loginform Form2= Mainform
    • 在 Program.cs 中查找“Application.Run(new Form1());”行里面是什么形式?
    【解决方案3】:

    根据哪个表单调用哪个其他表单(以及如何调用),您必须以某种方式将请求从登录表单中“冒泡”到主表单。

    假设表格 1 模态调用表格 2:

    public partial class Form1 : Form
    {
        // ...
    
        private void callForm2()
        {
            var form2 = new Form2();
            if ( form2.ShowDialog( this )== DialogResult.Abort )
            {
                // Close myself if called form instructs me to close.
                Close();
            }
        }
    }
    

    如您所见,我使用DialogResult.Abort 作为“通信信号”来关闭。这可以在Form2 中完成,如下所示:

    public partial class Form2 : Form
    {
        // ...
    
        private void buttonCloseAll_Click( object sender, EventArgs args )
        {
            // Close myself _and_ return the abort result to the caller.
            DialogResult = DialogResult.Abort;
        }
    }
    

    请注意,这只是一个(不完整的示例)。我确信有其他解决方案可以满足您的要求。

    【讨论】:

    • 第一个 form1 和 form2(visible=false),他们输入用户名和密码,按 Enter 并转到 form2(visible=true now)。 (现在我要关闭 form1)
    • 对不起,但不起作用。我现在打开谷歌翻译。我想在form1中完全关闭从form2到form1的过渡。
    【解决方案4】:

    1. 您打开的表单是应用程序的主要表单。这与您如何命名表格或表格上的内容无关。如果您关闭主窗体,您的应用程序将终止。

    你可以在你的情况下做这两件事:

    1. 隐藏您的登录表单而不是关闭它
    2. 首先打开您的主表单,然后将您的登录表单用作其顶部的模式对话框。在这种情况下,您可以关闭登录表单并继续运行您的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2012-11-14
      • 2015-08-15
      相关资源
      最近更新 更多