繁体   English   中英

从消息框中关闭所需的表单! (C#)

[英]Closing the desired form from a messagebox! (c#)

这是我的表单的样子-Form1是第一个表单。 我使用showdialog方法从Form1移到Form2(Form1在后台,Form2在顶部)。 现在,单击Form2上的按钮时,将显示一个messagebox (请注意,Form1仍在后台)。 Messagebox只有“确定”按钮。 现在,当我按OK我想加载Form3并想同时关闭Form2和Form1。 如何关闭Form2和Form1? 我在Form2中使用了以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
         if (...)
         {
               MessageBox.Show("hello");
               this.DialogResult = DialogResult.OK;
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
         }
    }

此方法不会关闭Form2和Form1,但会显示Form3。 所以我在Form2中尝试了这个:

    private void button1_Click(object sender, EventArgs e)
    {
        if (...)
        {
           if (MessageBox.Show("hello") == DialogResult.OK)
           {
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
           }
        }
    }  

仍然没有关闭两个表格。 我尝试从MessageBox.Show下的Form2调用在Form1和Form2中创建的公共关闭方法(在Form1和Form2中为this.Close )。 仍然没有任何效果。 如何使用消息框的“确定”按钮删除这两种形式?

谢谢。 简单但棘手。请留下代码段。 不幸的是,我不理解技术术语:-(

您需要知道要关闭的实例(在这种情况下为表单)。

在Form2中,您可以创建一个变量(例如theOneForm )来存储对Form1的引用,并在创建Form1(甚至在Form1的构造函数中)后对其进行设置。

// in Form2
public Form1 theOneForm {get; set;}

// in Form1
Form2 frm = new Form2();
frm.theOneForm = &this; // correct me if I'm wrong here...

然后从您的button1_Click调用theOneForm.Close() -这将关闭您的Form1。

private void button1_Click(object sender, EventArgs e)
{
    if (...)
    {
       if (MessageBox.Show("hello") == DialogResult.OK)
       {
           Form3 frm = new Form3();
           frm.ShowDialog();
           theOneForm.Close();
           this.Close();
       }
    }
} 

另外, 执行其他代码 ,请关闭表单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM