Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 窗体自动关闭_C#_Winforms_Visual Studio 2012 - Fatal编程技术网

C# 窗体自动关闭

C# 窗体自动关闭,c#,winforms,visual-studio-2012,C#,Winforms,Visual Studio 2012,我是C#(从Java转换)新手,在理解C中的GUI时遇到了一些困难# 我只需粘贴我的代码,让它解释大部分内容 主要类别: Frame frame; keepRunning = true; public GraphicsComponent() { frame = new Frame(); frame.Show(); } public void run() { while (keepRunning) { Console.WriteL

我是C#(从Java转换)新手,在理解C中的GUI时遇到了一些困难#

我只需粘贴我的代码,让它解释大部分内容

主要类别:

 Frame frame;
 keepRunning = true;

 public GraphicsComponent()
 {
     frame = new Frame();
     frame.Show();
 }

 public void run()
 {
    while (keepRunning)
    {
       Console.WriteLine("Running");
    }
 }

 public static void Main()
 {
    GraphicsComponent gameComponent = new GraphicsComponent();

    gameComponent.run();
}
使用frame.Show()方法,它会快速出现和消失。但是“正在运行”的循环正在运行

我看到的另一个方法是另一个名为ShowDialoge()的方法,该方法保持窗口打开,但阻止其余代码运行,直到关闭为止

我想使用它的方式基本上是GUI在Java中的工作方式。我可以根据需要在代码的其余部分引用对象(及其组件)

谢谢你

编辑:有很多困惑,所以这里是我的框架类:

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

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

启动winforms应用程序的常规方法是通过文件->新建winforms项目。当您这样做时,您会得到“Program.cs”,其中包含您的主方法—应用程序的入口点。从这里可以得到如下代码:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ConfigForm());
    }
    public ConfigForm()
    {
        InitializeComponent();

        // Other init work here

    }
在本例中,我启动了一个新的“ConfigForm”,它是一个表单,在它的ctor中包含如下代码:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ConfigForm());
    }
    public ConfigForm()
    {
        InitializeComponent();

        // Other init work here

    }
我通过右键单击项目并添加新表单来创建表单


您可能需要查看
应用程序。运行
方法,请参阅。您可以指定一个“主窗体”“在应用程序运行期间,哪个窗体将成为主窗体,当关闭时将结束应用程序,或者如果需要,可以指定其他选项。”。也许最简单的解决方案是启动一个主窗体,由于该窗体在应用程序期间处于活动状态,因此可以启动该窗体内的其他长时间运行的代码。如果您希望一直在执行某种后台操作的代码,那么您可能希望在它自己的线程中启动它。然而,线程是很难的,所以如果你是c#/.net新手,除非你需要,否则我会尽量远离线程。

你看过winforms designer吗?通常,您会创建一个从System.Windows.Forms.Form继承的类(例如Form1),并调用Application.Run(new Form1());在你的主要方法中。是的,这是一个奇怪的设置。。。还有,keepRunning是在哪里定义的?您可能应该使用一个表单。框架不是您需要的,WPF也不是WinForms@Alan我不是起诉框架,我只是称之为类框架,它是一种形式。跑步意味着保持整洁。我使用一个表单,这个调用叫做Frame。我怎样才能在表单之外运行代码?