如何在控制台应用程序中打开一个窗口?

时间:2016-12-31 04:46:36

标签: c# forms console window

我需要在应用程序中显示一个窗口,但它是控制台。

我尝试过使用:

Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

代码保持这样。

static void Main(string[] args)
        {


            _handler += new EventHandler(Handler);
            SetConsoleCtrlHandler(_handler, true);
            ConnectToServer();
            RequestLoop();   
             Application.EnableVisualStyles(); 
             Application.SetCompatibleTextRenderingDefault(false);
             Application.Run(new Form1());

        }

但是窗口没有打开,如果我先把代码放到窗口打开,但是控制台没有执行命令。

static void Main(string[] args)
            {
                   Application.EnableVisualStyles(); 
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());

                _handler += new EventHandler(Handler);
                SetConsoleCtrlHandler(_handler, true);
                ConnectToServer();
                RequestLoop();                      

            }

这两个代码都不起作用。

在第一个代码中,窗口无法打开。

在第二个代码中,窗口打开,但控制台不执行命令

3 个答案:

答案 0 :(得分:2)

问题是您在同一个线程中运行控制台和窗口。启动窗口时,由于线程与控制台相同,因此线程正在处理窗口而不是控制台。同时运行控制台和窗口(在单独的线程中): 改变

Application.Run(new Form1());

Task.Run(() => Application.Run(new Form1()));

这将为您的Window设置另一个线程,控制台仍将处理。 enter image description here

答案 1 :(得分:2)

Task.Run(() => Application.Run(new Form1()));

enter image description here

答案 2 :(得分:1)

试试这个,你忘了' Console.ReadLine();',如果它不是你的控制台应用程序将关闭,你的窗口也是。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Task.Run(() => Application.Run(new Form1()));
            Console.ReadLine();
        }
    }
}