关闭当前表单打开该表单中关闭的新表单

时间:2017-03-10 08:04:58

标签: c# forms winforms visual-studio

我有2个表格 在表单1我有一个按钮,当我点击按钮表格2将显示,我的数据显示在表格2到目前为止它是好的 但我希望当表单2中的一个打开时,如果用户单击表单1中的按钮,则关闭此表单2并打开一个新表单!不要打开其他表格2 我希望你理解我的问题:对不起英语不好

我尝试过表单实例函数,但它不能正常运行它只是保存这个表单2并且不允许打开新表单! 使用这些代码:

    public static Form2 Instance
    {
        get
        {
            if (_form2 == null)
            {
                _form2 = new Form2();
            }
            return _form2;

        }
    }

这是按钮代码:

    private void btnSave_Click(object sender, EventArgs e)
    {

            if (RadioMale.Checked == true)
            {
                jensiyat = "مرد";
            }
            else { jensiyat = "زن"; }
            if (RadioMarried.Checked == true)
                tahol = "متاهل";
            else tahol = "مجرد";
        Class1.txt +=
           "________________________\n\n" + "مشخصات مربوط به  خانم/آقای " 
           + tbFamily.Text + "\n________________________" +
            "\nنام و نام خانوادگی: " + tbName.Text + " " +
            tbFamily.Text + "\n" + "ایمیل: " + tbEmail.Text + "\n" + "شماره ملی: " +
            tbCodmeli.Text + "\n" + "سریال شناسنامه: " +
            tbSerialShenasname.Text
            + "\nشهر محل زندگی: "+ shahr + " - " + TreeShahr.SelectedNode.Text
            + "\nآدرس: " + tbAddress.Text + "\n"
            + " تحصیلات : " + ComboTahsilat.SelectedItem
            + "\nجنسیت : " +jensiyat
            + "\nوضعیت تاهل: " + tahol
            + "\nتاریخ تولد: " + BirthTimePicker.Value.ToPeString()
            + "\n__________________________________________________";

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

2 个答案:

答案 0 :(得分:2)

您可以使用Application.OpenForms。获取应用程序拥有的打开表单的集合。

 List<Form> forms = new List<Form>();

  // All opened myForm instances
  foreach(Form f in Application.OpenForms){
     if (f.Name == "Form2"){
        f.Close();
        break;
     }
  }

您可以显示

之类的表单
Form2 ff = new Form2();
ff.Show();

答案 1 :(得分:0)

Form2的变量声明为btnSave_Click方法范围之外的类变量。这样,当您再次单击该按钮时,您将能够再次访问它。

Form frm2 = new Form2();

private void btnSave_Click(object sender, EventArgs e)
{

    if(frm.Visible)  // check whether the form is already showing
    {
        frm.Close();  // if yes close it first
    }

    frm2 = new Form2(); // then make a new form and show it
    frm2.Show();