【问题标题】:How to open the second form?如何打开第二个表格?
【发布时间】:2011-08-08 18:12:21
【问题描述】:

我的项目中有 Form1 和 Form2。 Form2 只是一个带有 Form1 设置的表单。从 Form1 打开 Form2 的命令是什么,以及关闭它的命令是什么?

【问题讨论】:

    标签: c# .net winforms forms


    【解决方案1】:

    您需要处理因用户交互而引发的 Form1 上的 事件。例如,如果您有一个用户单击以显示设置表单 (Form2) 的“设置”按钮,您应该为该按钮处理 Click 事件:

    private void settingsButton_Click(Object sender, EventArgs e)
    {
        // Create a new instance of the Form2 class
        Form2 settingsForm = new Form2();
    
        // Show the settings form
        settingsForm.Show();
    }
    

    除了Show method,您还可以选择使用ShowDialog method。不同之处在于后者将表单显示为 模态对话框,这意味着用户在关闭模态表单之前无法与应用程序中的其他表单交互。这与消息框的工作方式相同。 ShowDialog 方法还返回一个值,指示表单是如何关闭的。


    当用户关闭设置表单时(例如,通过单击标题栏中的“X”),Windows 会自动关闭它。

    如果你想在用户要求关闭之前自己关闭,可以调用表单的Close method

    this.Close();
    

    【讨论】:

      【解决方案2】:
      //To open the form
      
      Form2 form2 = new Form2();
      
      form2.Show();
      // And to close
      form2.Close();
      

      希望对你有帮助

      【讨论】:

      • 好的,谢谢,它很好用...如果我在 form2 中设置一些东西,比如 int a ....并且我希望在关闭 form2 后主 form1 知道 INT a 中的内容是什么?
      • 好吧,既然你的主窗体上有一个 Form2 的实例,你总是可以有一个属性来访问该 int 值。只需确保在关闭表单之前存储该 int 值即可:)
      【解决方案3】:

      如果你想以模态方式打开Form2(意味着你不能在Form2打开时点击Form1),你可以这样做:

      using (Form2 f2 = new Form2()) 
      {
          f2.ShowDialog(this);
      }
      

      如果您想以非模态方式打开 Form2(意味着您仍然可以在 Form2 打开时单击 Form1),您可以像这样创建对 Form2 的表单级引用:

      private Form2 _f2;
      
      public void openForm2()
      {
          _f2 = new Form2();
          _f2.Show(this); // the "this" is important, as this will keep Form2 open above 
                          // Form1.
      }
      
      public void closeForm2()
      {
          _f2.Close();
          _f2.Dispose();
      }
      

      【讨论】:

        【解决方案4】:

        我假设您在谈论 Windows 窗体:

        要显示您的表单,请使用 Show() 方法:

        Form form2 = new Form();
        form2.Show();
        

        使用 Close() 关闭表单:

        form2.Close();
        

        【讨论】:

        • 好的,谢谢,它很好用...如果我在 form2 中设置一些东西,比如 int a ....并且我希望在关闭 form2 后主 form1 知道 INT a 中的内容是什么?
        【解决方案5】:

        在一行中是:

        (new Form2()).Show();
        

        希望对你有帮助。

        【讨论】:

          【解决方案6】:

          在任何点击事件(或其他点击事件)上:

          Form2 frm2 = new Form2();
          frm2.Show();
          

          【讨论】:

            【解决方案7】:

            分别为Form.Show()(或Form.ShowDialog(),如果您希望第二种形式是模态的)和Form.Hide()(或Form.Close(),取决于您所说的close it)。

            【讨论】:

              【解决方案8】:

              如果您需要将Form2 显示为modal dialog,请在Form1 中执行:

              var form2 = new Form2();
              if (form2.ShowDialog() == DialogResult.OK) 
              {
                  // process results here
              }
              

              模式对话框在打开时将保持焦点;它会将父窗口 (Form1) 设置为“在后台”,直到它关闭,这是设置窗口的常见做法。

              【讨论】:

                【解决方案9】:

                从这个开始:

                var dlg = new Form2();
                dlg.ShowDialog();
                

                【讨论】:

                  【解决方案10】:
                  Form1 OpenNewForm = new Form1();
                  OpenNewForm.Show();
                  

                  “OpenNewForm”是表单的名称。 在第二个表单打开。

                  如果要关闭之前的表单:

                  this.Close();
                  

                  【讨论】:

                    【解决方案11】:

                    在 C#.Net 中,如果您在解决方案内部和项目内部,并且 Form2(带有 Form2.cs)在内部,

                     private void button1_Click(object sender, EventArgs e)
                        {
                           ProjectName.Form2 secondaryForm= new ProjectName.Form2();
                    
                           secondaryForm.Show();
                        }
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-07-28
                      相关资源
                      最近更新 更多