C# windows窗体。。console.writeline()控制台在哪里?

C# windows窗体。。console.writeline()控制台在哪里?,c#,.net,winforms,console-application,C#,.net,Winforms,Console Application,我创建了一个windows窗体解决方案,并在我调用的类的构造函数中 Console.WriteLine(“调用构造函数”) 但我只拿到了表格,没有控制台。。那么输出在哪里?在项目设置中将应用程序类型设置为控制台。然后您将获得控制台窗口和Windows窗体。如果您在Visual Studio中运行应用程序,您可以在输出窗口中看到控制台输出 调试->窗口->输出 请注意,从WiFrm应用程序输出诊断数据的最佳方法是使用或配置它们更适合如何以及在哪里输出。 ,您也应该考虑使用,这可能是您正在寻找的。这

我创建了一个windows窗体解决方案,并在我调用的类的构造函数中

Console.WriteLine(“调用构造函数”)


但我只拿到了表格,没有控制台。。那么输出在哪里?

在项目设置中将应用程序类型设置为控制台。然后您将获得控制台窗口和Windows窗体。

如果您在Visual Studio中运行应用程序,您可以在输出窗口中看到控制台输出

调试->窗口->输出


<>请注意,从WiFrm应用程序输出诊断数据的最佳方法是使用或配置它们更适合如何以及在哪里输出。

,您也应该考虑使用,这可能是您正在寻找的。这些语句由应用程序的跟踪侦听器编写,可以在中查看


正如其他答案所述,
System.Diagnostics.Debug.WriteLine
是调试消息的正确调用。但要回答你的问题:

从Winforms应用程序中,您可以调用控制台窗口进行如下交互:

using System.Runtime.InteropServices;

...

void MyConsoleHandler()
{
    if (AllocConsole())
    {
        Console.Out.WriteLine("Input some text here: ");
        string UserInput = Console.In.ReadLine();

        FreeConsole();
    }
}


[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();
当给定打开的某些开关时,我有时使用它来引发命令提示,而不是应用程序窗口

如果有人需要,在这个类似的问题中还有一些想法:

或者,如果您从控制台启动exe,但不想将应用程序清单更改为控制台应用程序,下面是真正的解决方案:我一直在尝试,但输出窗口中除了通常的“生成已启动”“生成已成功”的内容外,没有显示任何内容。您如何配置输出方式和位置?我进入了“调试选项”窗口,在“调试>输出窗口>常规输出设置”下,“所有调试输出”设置为“开”,但我仍然无法使用这些方法在输出窗口中显示任何内容。
using System.Runtime.InteropServices;

...

void MyConsoleHandler()
{
    if (AllocConsole())
    {
        Console.Out.WriteLine("Input some text here: ");
        string UserInput = Console.In.ReadLine();

        FreeConsole();
    }
}


[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();