C# 动态Windows窗体初始化

C# 动态Windows窗体初始化,c#,winforms,C#,Winforms,我试图用C语言编写一个程序(控制台初始化),动态初始化一组windows窗体 这是一个锦标赛程序,允许用户同时管理多个电台 所以,我想到的最好的方法是,比方说,用户想要管理三个站点 TournamentForm[] T = new TournamentForm[3]; void startTournament() { for (int count = 0; count < t.length; count++) { T[count] = new Tourna

我试图用C语言编写一个程序(控制台初始化),动态初始化一组windows窗体

这是一个锦标赛程序,允许用户同时管理多个电台

所以,我想到的最好的方法是,比方说,用户想要管理三个站点

TournamentForm[] T = new TournamentForm[3];

void startTournament()
{
    for (int count = 0; count < t.length; count++)
    {
        T[count] = new TournamentForm();
        T[count].show();
    }
}
TournamentForm[]T=新的TournamentForm[3];
无效开始转动()
{
for(int count=0;count
这种方法的固有问题是,在每个循环结束时,表单是闭合的

是否有一种动态初始化windows窗体的方法,或者我是否需要编写最大数量的windows实例的长代码


嗯。。。我可能在写这篇文章时想到了使用递归。仍然张贴问题,以防有更好的答案


所以我一直在使用这个论坛作为一个思想板。。。开枪打我。我更喜欢在我的想法中尽早发现漏洞

@这里是编译的代码

namespace Tournament_2._1
{
    class Program
    {
        static MainWindow[] test = new MainWindow[2];

        static void Main(string[] args)
        {
            StartTournament();
        }

        private static void StartTournament()
        {
            for (int count = 0; count < test.Length; count++)
            {
                test[count] = new MainWindow();

                test[count].Show();
            }

        }
    }
}
namespace锦标赛\u 2.\u 1
{
班级计划
{
静态主窗口[]测试=新主窗口[2];
静态void Main(字符串[]参数)
{
开始转动();
}
私有静态void startTurnament()
{
for(int count=0;count
当for循环在Main()方法中时(即使在逐行遍历每一行时),我缺少的是在Main()方法的末尾关闭窗口,而不是在每个循环的末尾

为了解决这个问题,我尝试了几种暂停控制台的方法,但没有一种方法允许关注表单

相同的问题,不同的位置。

它是“Windows窗体应用程序”项目吗

在“Program.cs”中:

在MainForm上添加按钮“btnStart”

对于此按钮,单击添加事件处理程序

在MainForm.cs中:

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        Form[] t = new Form[3];

        for (int count = 0; count < t.Length; count++)
        {
            t[count] = new Form();
            t[count].Show();
        }
    }
}
public分部类MainForm:Form
{
公共表格(
{
初始化组件();
}
私有void btnStart_单击(对象发送方,事件参数e)
{
表[]t=新表[3];
对于(int count=0;count

这样,表单在循环后就不会关闭。

您没有显示所有代码,事实上,您显示的代码甚至没有编译。。。(
Show
而不是
Show
)。没有更多的代码,我们只能猜测


我推测,但我认为发生的情况是,在生成三个表单、退出应用程序并关闭刚刚创建的三个表单之后,关闭
main表单。

是否需要构造函数?表单不应该关闭。你把所有这些代码都放在主窗体的构造函数中了吗?天哪,不要使用递归@Blorgbeard我很欣赏你的沉默。我在问题帖中对此发表了评论。我认为for循环中的第一行(t[count]=new form()),因为它是在循环中初始化的,可能是它在循环结束时关闭表单的原因。这没有意义。你的程序无法运行,因为它是一个控制台应用程序。您需要调用应用程序。运行,如下面的答案所示。或者更简单,只需创建一个winforms项目即可。
public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        Form[] t = new Form[3];

        for (int count = 0; count < t.Length; count++)
        {
            t[count] = new Form();
            t[count].Show();
        }
    }
}