我曾经看过winform
应用程序的源代码,代码有Console.WriteLine();
。我问了原因,我被告知这是出于调试目的。
请问Console.WriteLine();
中winform
的本质是什么,它执行了什么操作,因为当我尝试使用它时,它从未写过任何内容。
答案 0 :(得分:12)
它写入控制台。
最终用户不会看到它,说实话,将它放入正确的日志会更加清晰,但是如果你通过VS运行它,控制台窗口就会填充。
答案 1 :(得分:6)
Winforms只是显示窗口的控制台应用程序。您可以将调试信息定向到控制台应用程序。
正如您在下面的示例中所看到的,有一个命令可以附加父窗口,然后将信息提供给它。
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace MyWinFormsApp
{
static class Program
{
[DllImport( "kernel32.dll" )]
static extern bool AttachConsole( int dwProcessId );
private const int ATTACH_PARENT_PROCESS = -1;
[STAThread]
static void Main( string[] args )
{
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
AttachConsole( ATTACH_PARENT_PROCESS );
// to demonstrate where the console output is going
int argCount = args == null ? 0 : args.Length;
Console.WriteLine( "nYou specified {0} arguments:", argCount );
for (int i = 0; i < argCount; i++)
{
Console.WriteLine( " {0}", args[i] );
}
// launch the WinForms application like normal
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault( false );
Application.Run( new Form1() );
}
}
}
以下是此示例的资源:http://www.csharp411.com/console-output-from-winforms-application/
答案 2 :(得分:3)
你不会真正正常使用它,但是如果你已经附加了一个控制台或使用AllocConsole,它将像任何其他控制台应用程序一样运行,输出将在那里可见。
为了快速调试,我更喜欢Debug.WriteLine
,但对于更强大的解决方案,Trace类可能更受欢迎。
答案 3 :(得分:2)
除非实际上,他们应该利用Console
被重定向到Output
窗口,否则它不会执行任何操作。Debug.WriteLine
代替。
Debug.WriteLine
的好处是,在以Release
模式构建时,它会被优化掉。
注意:正如Brad Christie和Haedrian所指出的那样,显然它在运行Windows窗体应用程序时实际上会写入Visual Studio中的Console
窗口。你每天都学到新东西!