C# 在C中创建表单的多个实例(并将它们保留在那里)#

C# 在C中创建表单的多个实例(并将它们保留在那里)#,c#,C#,我是C#的新手,我正在尝试创建一个Windows窗体应用程序,该应用程序将创建同一窗体的多个实例并保持它们存在,并在某个按键上结束它们。现在,我在阻止上述表单自动关闭方面遇到了一些困难。因为我是c#的新手,我不知道为什么。我也不知道在哪里可以找到这样的问题,所以这个问题可能是重复的。以下是我的(可能是被严重破坏的)主代码(来自主文件,在本例中是Program.cs): 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Runt

我是C#的新手,我正在尝试创建一个Windows窗体应用程序,该应用程序将创建同一窗体的多个实例并保持它们存在,并在某个按键上结束它们。现在,我在阻止上述表单自动关闭方面遇到了一些困难。因为我是c#的新手,我不知道为什么。我也不知道在哪里可以找到这样的问题,所以这个问题可能是重复的。以下是我的(可能是被严重破坏的)主代码(来自主文件,在本例中是Program.cs):

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Runtime.InteropServices;
使用系统线程;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.Windows.Input;
命名空间WindowsFormProgram1
{
静态类程序
{
/// 
///应用程序的主要入口点。
/// 
/// 
[状态线程]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
对于(int i=0;i<15;i++)
{
新表单1().Show();
睡眠(100);
}        
}
}
}

任何答复都将不胜感激。正如我前面提到的,我对C#只有初步的了解,这可能只是一个重复。

问题在于,代码结束的时间比您想象的要早

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    for (int i = 0; i < 15; i++)
    {
        new Form1().Show();
        Thread.Sleep(100);
    }
    // code exit's here, thus closing all forms created.
}
此外,由于要在按下某个键时关闭所有窗体,因此可以执行以下操作:

public static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    for (int i = 0; i < 15; i++) {
        Form1 f = new Form1();
        f.KeyPress += new KeyPressEventHandler(f_KeyPress);
        f.Show();
    }
    // Note, no `new Form1()`; this will block until Exit is called.
    Application.Run();
}

static void f_KeyPress(object sender, KeyPressEventArgs e)
{
    // This will exit when ANY key is pressed on ANY form
    Application.Exit();
}
publicstaticvoidmain()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
对于(int i=0;i<15;i++){
Form1 f=新的Form1();
f、 KeyPress+=新的KeyPressEventHandler(f_KeyPress);
f、 Show();
}
//注意,没有“new Form1()”;这将阻止,直到调用Exit。
Application.Run();
}
静态无效f_按键(对象发送器,按键事件参数e)
{
//当按下任何窗体上的任何键时,此选项将退出
Application.Exit();
}
这些只是实现您想要的东西的几种方法,还有一些方法,但是由于您只是在学习,我将把其他实现细节留给您

我也不知道到哪里去找这样的问题

有很多关于从何处开始以及如何继续的信息,当您对.NET类/函数的语法或操作感到好奇时,可以参考.NET库中的文档。在VisualStudio中还有一个允许您查看一些简短文档的功能


希望这能有所帮助。

非常感谢您回答这个问题,我会调查的。另外,我说“我不知道去哪里找”,我的意思是我真的不知道要找什么,所以问了这个问题。再次感谢!
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    for (int i = 0; i < 14; i++) // <- note 14
    {
        new Form1().Show(); // will show the form
        Thread.Sleep(100);
    }
    // This will show the form and block until the form is closed
    Application.Run(new Form1());
}
public static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    for (int i = 0; i < 15; i++) {
        Form1 f = new Form1();
        f.KeyPress += new KeyPressEventHandler(f_KeyPress);
        f.Show();
    }
    // Note, no `new Form1()`; this will block until Exit is called.
    Application.Run();
}

static void f_KeyPress(object sender, KeyPressEventArgs e)
{
    // This will exit when ANY key is pressed on ANY form
    Application.Exit();
}