Console.WriteLine不会显示在"输出"窗口中

sar*_*012 77 .net c# winforms

我已经Console.WriteLine拨打了一些电话进行测试,但它们没有出现在输出框中?

public static ArrayList myDeliveries = new ArrayList();

public mainForm(){
    InitializeComponent();
}

private void mainForm_Load(object sender, EventArgs e){

    if (!File.Exists("../../MealDeliveries.txt")){
        MessageBox.Show("File not found!");
        return;
    }

    using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
        //first line is delivery name 
        string strDeliveryName = sr.ReadLine();
        Console.WriteLine("Test content");

        while (strDeliveryName != null){

            //other lines 
            Delivery d = new Delivery(
                strDeliveryName, 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine()
            );

            mainForm.myDeliveries.Add(d);

            //check for further values
            strDeliveryName = sr.ReadLine();
        }
    }

    displayDeliveries();


}


private void displayDeliveries(){

    lstDeliveryDetails.Items.Clear();
    Console.WriteLine("Test content");
    Console.WriteLine(mainForm.myDeliveries.Count);
    foreach (Delivery d in mainForm.myDeliveries){
        lstDeliveryDetails.Items.Add(d.DeliveryName);

    }
}
Run Code Online (Sandbox Code Playgroud)

谁能帮忙?

Zac*_*son 96

Console输出到控制台窗口,Winforms应用程序不显示控制台窗口.您应该可以使用System.Diagnostics.Debug.WriteLine将输出发送到IDE中的输出窗口.

编辑:关于问题,你确认你mainForm_Load的实际被调用了吗?你可以在开头mainForm_Load看一个断点.如果它没有被调用,我怀疑它mainForm_Load没有与Load事件联系起来.

此外,它更有效,通常更好地覆盖On{EventName}而不是{EventName}从派生类内部订阅(在您的情况下覆盖OnLoad而不是Load).

  • 像这样?System.Diagnostics.Debug.WriteLine("some tetttttttttt23423423423423423ttttttttttttttttttttttt"); (4认同)
  • @Luke就是这样 (2认同)
  • @Luke - 是的,但你可以`导入System.Diagnostics`以使其更简单.我更喜欢使用`Trace`类. (2认同)
  • 在 Visual Studio 的顶部导航栏中,转到“视图”>“输出”以查看“System.Diagnostics.Debug.WriteLine”中的值。 (2认同)

Aar*_*ght 49

如果要在生产中使用此输出,请使用Trace类成员.这使得代码可移植,您可以连接不同类型的侦听器并输出到控制台窗口,调试窗口,日志文件或您喜欢的任何其他内容.

如果这只是您用来验证某些代码正在执行或具有正确值的临时调试代码,那么请使用Debug类,如Zach建议的那样.

如果您绝对必须使用控制台,则可以在程序的方法中附加控制台Main.

  • Trace.WriteLine()为我工作。谢谢! (2认同)

小智 17

使用Console.WriteLine( "Test" );能够将日志消息写入 Windows 窗体/WPF 项目的 Visual Studio 中的输出窗口(查看菜单 --> 输出)。

然而,我遇到了一个情况,它不起作用,只能System.Diagnostics.Debug.WriteLine( "Test" );起作用。我重新启动 Visual Studio 并Console.WriteLine()再次开始工作。似乎是 Visual Studio 的错误。

  • 截至今天,在 VS 2019(Ver. 16.11.19)中,这是正确答案!谢谢。 (2认同)

dav*_*rvw 12

如果要Console.WriteLine("example text")在"调试输出"窗口中显示输出,请暂时将应用程序的输出类型从控制台应用程序更改为Windows应用程序.

从菜单中选择Project + Properties,然后导航到Output type:下拉,切换到Windows Application然后运行您的应用程序

当然,您应该将其更改为构建旨在在IDE外部运行的控制台应用程序.

(使用Visual Studio 2008和2010进行测试,预计它也应该适用于后期版本)

  • 为什么 Console.Writeline 在控制台应用程序中不起作用?这听起来非常违反直觉。 (4认同)
  • ^^ 是啊,什么?这一直有效。但现在不是了。这感觉像是 Visual Studio 中的一个错误。 (2认同)

Osc*_*lla 6

尝试取消选中复选框 \xe2\x80\x9c 将所有输出窗口文本重定向到立即窗口\xe2\x80\x9d

\n
Tools => Options => Debugging => General\n
Run Code Online (Sandbox Code Playgroud)\n

我检查了它,所有内容都写在立即窗口中,而不是输出窗口中

\n