Winforms中Console.WriteLine()的用途是什么

时间:2013-08-27 19:29:52

标签: c# winforms console-application

我曾经看过winform应用程序的源代码,代码有Console.WriteLine();。我问了原因,我被告知这是出于调试目的。

请问Console.WriteLine();winform的本质是什么,它执行了什么操作,因为当我尝试使用它时,它从未写过任何内容。

4 个答案:

答案 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窗口。你每天都学到新东西!