保持形式在顶部,打开和关闭其他形式

时间:2013-11-12 15:49:40

标签: c# .net-3.5 sharpdevelop

我是C#的新手,可以使用一些帮助。

到目前为止,我用C#创建了一组8个窗体,这些窗体有基本的东西,如文本框,标签,单选按钮等。现在我已经完成了所有这些窗体的制作,我想要有一个额外的表单(称为选择器表单)我可以用来选择其他8个表单之一。在任何给定的时间,我希望选择器窗体位于其他窗口的顶部,它将有8个单选按钮(或常规按钮,无关紧要)。单击其中一个按钮时,当前表单(不是“选择器”表单)应该消失,并且应该出现一个新表单。按钮的名称将是显示的新表单的名称。

我看过几个例子,这是我到目前为止的代码:

void Button1Click(object sender, EventArgs e)
        {
            //this.Hide();
            var form1 = new CASII();
            form1.Closed += (sender1, args) => this.Close();
            form1.Show();           
        }

        void Button2Click(object sender, EventArgs e)
        {
//          this.Hide();
            var form2 = new CCARAdmin();
            form2.Closed += (sender1, args) => this.Close();
            form2.Show();
            //Application.Run(new CCARAdmin());         
        }

我遇到的问题是我不想隐藏选择器表单,这样做,我不知道如何识别打开的另一个表单关闭它然后打开另一个表单。

从启动程序开始,逻辑就像这样: 显示选择器表单 在“选择器”表单上单击按钮时,将“选择器”表单保持在顶部,并使用按钮名称显示另一个表单。 在“选择器”表单上单击其他按钮时,关闭打开的上一个表单(而不是“选择器”表单),然后打开与该按钮名称对应的新表单。将选择器表单保持在顶部。 当“选择器”表单关闭时,应用程序将停止。

3 个答案:

答案 0 :(得分:1)

selectorForm.TopMost = true(这将有助于保持选择器窗体始终位于顶部)。 在选择器表单中创建一个表单变量,以保留当前打开的表单的引用。

单击按钮的示例代码:

Form frm = null;
void Button1Click(object sender, EventArgs e)
        {
            //this.Hide();
            var form1 = new CASII();
             if (frm == null)
             {
                 frm = form1;
             }
             else
             {
                 frm.Close();
             }
            form1.Show();
            this.TopMost = true;
            frm = form1;
        }

答案 1 :(得分:1)

  

我遇到的问题是我不想隐藏选择器表单   这样做,我不知道如何识别其他形式   打开关闭它然后打开另一种形式。

  • 将选择器表单TopMost设置为True,使其始终位于顶部。要么 您可以在打开新表单后使用BringToFront
  • 了解其他已开放的表单check this answer。或者,您可以将每个From定义为Selector表单中的一个字段,然后检查它。

答案 2 :(得分:0)

我通过将TopMost设置为true来解决此问题,然后在每个按钮下使用以下代码:

            for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
            {
                if (Application.OpenForms[i].Name != "FormSelector")
                    Application.OpenForms[i].Close();
            }
            var form = new TRAC();
            if (radioButton9.Checked == true)
            {
                form.Show();
            }