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

时间:2010-04-19 17:23:32

标签: c# .net 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);

    }
}

任何人都可以帮忙吗?

9 个答案:

答案 0 :(得分:92)

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

修改:关于此问题,您是否已确认您的mainForm_Load实际上已被调用?您可以在mainForm_Load的开头放置一个断点来查看。如果没有被调用,我怀疑mainForm_Load没有连接到Load事件。

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

答案 1 :(得分:41)

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

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

如果你绝对必须使用控制台,那么你可以在程序的Main方法中attach a console

答案 2 :(得分:11)

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

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

当然,您应该将其更改回来,以构建一个旨在在IDE外部运行的控制台应用程序。

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

答案 3 :(得分:1)

如果您正在开发命令行应用程序,您还可以在代码末尾使用Console.ReadLine()等待“Enter”按键,然后关闭控制台窗口,以便您可以读取输出。但是,上面发布的跟踪和调试答案都是更好的选择。

答案 4 :(得分:0)

在Mac VS 2017上发生问题时(我面对过)。

  1. 转到项目>>“您的项目名称”选项。
  2. 将弹出一个选项窗口
  3. 转到运行>>默认菜单选项
  4. 勾选“在外部控制台上运行”选项为“ TRUE”,然后说“确定”

立即运行您的应用程序代码。

答案 5 :(得分:0)

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

但是,我遇到了一种情况,它不起作用,只有System.Diagnostics.Debug.WriteLine( "Test" );在起作用。我重新启动了Visual Studio,Console.WriteLine()重新开始工作。似乎是Visual Studio错误。

答案 6 :(得分:0)

旧线程,但是在VS 2015 Console中。如果未在“项目属性->调试”选项卡中选中“启用Visual Studio宿主进程”或将其禁用,则WriteLine不会写入输出窗口

答案 7 :(得分:0)

尝试取消选中

中的“使用托管的兼容模式”复选框
  

工具=>选项=>调试=>常规

对我有用。

答案 8 :(得分:-2)

选择视图>>输出以打开输出窗口。

在输出窗口中,您可以看到结果