【问题标题】:Close Current form open new one of that form closed关闭当前表格 打开新的表格之一 已关闭
【发布时间】:2017-03-10 08:04:57
【问题描述】:

我有两种形式 在表格 1 中,当我单击按钮时,我有一个按钮,表格 2 将显示,我的数据显示在表格 2 上,到目前为止它还可以 但是我希望当用户单击表单 1 中的按钮时打开表单 2 中的一个,然后关闭此表单 2 并打开一个新表单!不打开其他表格 2 我希望你能理解我的问题:D 抱歉英语不好

我尝试了表单实例函数,但它无法正常工作,它只是持有此表单 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();
    }

【问题讨论】:

  • 澄清一下:如果Form2 已打开并且用户再次按下Form1 按钮--> 然后关闭当前Form2 并打开一个新的?如果是这样,请在您打开Form2 的位置发布此按钮的代码。解决方案就在那里。
  • 是的,我想要你说的!我编辑问题并添加按钮代码
  • 如果您在方法之外声明Form frm2 = new Form2();,您将可以控制窗口,如果再次单击该按钮,您可以在此方法中关闭它。看我的回答

标签: c# forms winforms visual-studio


【解决方案1】:

您可以使用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();

【讨论】:

  • 我应该把这段代码粘贴到哪里?在按钮?我做到了,但没有什么不同!我得到了这个错误:找不到名称空间_form2(您错过了参考)?
  • 用户点击表单1中的按钮
  • 是的,我做到了:(但没用,我在问题中添加了按钮代码,找不到名称空间
【解决方案2】:

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();

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多