【问题标题】:Open Form2 from Form1, close Form1 from Form2从 Form1 打开 Form2,从 Form2 关闭 Form1
【发布时间】:2010-06-02 14:59:06
【问题描述】:

现在,我有两个表单,分别叫form1和form2,在form1中有一个按钮,当我点击它,然后打开form2

问题:在form2中,我想创建一个按钮,当我点击它时,form2关闭,form1关闭。怎么办?这个

【问题讨论】:

  • 把问题放在主题行中而不是说你有一个怎么样。
  • 欢迎来到 StackOverflow,hcemp!下次你会想把问题放在主题行中,类似于编辑已经有的方式。此处提供更多指南:stackoverflow.com/faq 和此处:meta.stackexchange.com/questions/tagged/faq
  • 对不起,我很新鲜,我的英语很差

标签: c# winforms


【解决方案1】:

表格1:

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

表格2:

public partial class Form2 : Form
{
    Form opener;

    public Form2(Form parentForm)
    {
        InitializeComponent();
        opener = parentForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        opener.Close();
        this.Close();
    }
}

【讨论】:

    【解决方案2】:

    这行得通:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
        Form2.Show()
    

    【讨论】:

    • 我知道我来晚了,但上面的代码是 VB.net,而原帖询问的是 C# 代码(见标签)。
    【解决方案3】:

    您的问题含糊不清,但您可以使用 ShowDialog 显示表单 2。然后当您关闭表单 2 时,将 DialogResult 对象传回,让用户知道表单是如何关闭的 - 如果用户单击了按钮,然后也关闭表格 1。

    【讨论】:

    • 没有更简单的方法吗?我知道在 VB.NET 中,它就像调用 frmScores.show() 或 frmMain.hide() 一样简单,但我从未看过 C#。
    • 当然 - 然后你可以使用 SiN 的解决方案。
    【解决方案4】:

    在form2.buttonclick上放

    this.close();
    

    form1 应该有 form2 的对象。

    您需要订阅form2的Closing事件。

    并在关闭方法中放置

    this.close();
    

    【讨论】:

      【解决方案5】:

      如果您只想从 form2 关闭 form1 而在此过程中不关闭 form2,如标题所示,那么您可以在创建表单 1 时将对表单 1 的引用传递给表单 2 并使用它来关闭表单 1

      例如,您可以添加一个

      public class Form2 : Form
      {
          Form2(Form1 parentForm):base()
          {
              this.parentForm = parentForm;
          }
      
          Form1 parentForm;
          .....
      }
      

      Form2 的字段和构造函数

      如果您想首先关闭 form2,然后按照问题的文本建议关闭 form1,我会选择 Justins 的回答,即在关闭 form2 时将适当的结果返回给 form1

      【讨论】:

        【解决方案6】:

        我为我的项目做了一次,关闭一个应用程序并打开另一个应用程序。

            System.Threading.Thread newThread;
            Form1 frmNewForm = new Form1;
        
           newThread = new System.Threading.Thread(new System.Threading.ThreadStart(frmNewFormThread));
        this.Close();
                newThread.SetApartmentState(System.Threading.ApartmentState.STA);
                newThread.Start();
        

        并添加以下方法。您的 newThread.Start 将调用此方法。

            public void frmNewFormThread)()
            {
        
                Application.Run(frmNewForm);
        
            }
        

        【讨论】:

          【解决方案7】:
          //program to form1 to form2
          private void button1_Click(object sender, EventArgs e)
          {
              //MessageBox.Show("Welcome Admin");
              Form2 frm = new Form2();
              frm.Show();
              this.Hide();          
          }
          

          【讨论】:

            【解决方案8】:
            private void button1_Click(object sender, EventArgs e)
            {
                  Form2 m = new Form2();
                  m.Show();
                  this.Visible = false;
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-11-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多