0

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

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

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

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

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

从启动程序开始,逻辑如下所示: 显示选择器表单 当在选择器表单上单击一个按钮时,将选择器表单保持在顶部并显示带有按钮名称的另一个表单。当在 Selector 表单上单击不同的按钮时,关闭之前打开的表单(不是 Selector 表单)并打开与按钮名称对应的新表单。将 Selector 表单保持在顶部。When the Selector form is close, application stops.

4

3 回答 3

1

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

1 个按钮单击的示例代码:

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;
        }
于 2013-11-12T16:09:49.590 回答
1

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

  • 将 Selector 表单设置TopMostTrue使其始终位于顶部。或者您可以BringToFront在打开新表格后使用
  • 要了解其他开放的表格,请查看此答案。或者,您可以将每个 From 定义为 Selector 表单中的一个字段,然后进行检查。
于 2013-11-12T16:10:18.840 回答
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();
            }           
于 2013-11-12T18:20:38.790 回答