2010-04-19 527 views
51

我已经把一些Console.WriteLine调用来测试,但它们没有出现在输出框中?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); 

    } 
} 

任何人都可以帮忙?

+0

解决了这个问题,写错了代码。没有正确编译 – sark9012 2010-04-19 18:44:27

回答

33

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

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

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

76

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

编辑:关于问题,你有没有验证你的mainForm_Load实际上是被称为?你可以在mainForm_Load的开头找到一个断点。如果它没有被调用,我怀疑mainForm_Load没有连接到Load事件。

而且,它是更有效和普遍更好地覆盖On{EventName}而不是从订阅{EventName}派生类中(在你的情况下覆盖OnLoad代替Load)。

+4

喜欢这个? System.Diagnostics.Debug.WriteLine(“some tetttttttttt23423423423423423ttttttttttttttttttttttt”); – sark9012 2010-04-19 17:40:31

+2

@Luke是这样的 – msarchet 2010-04-19 17:45:35

+2

@Luke - 是的,但你可以'导入System.Diagnostics'使它更简单。我更喜欢使用'Trace'类。 – 2010-04-19 17:46:14

8

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

从菜单中选择项目+属性,然后导航至输出类型:下拉,更改为Windows应用程序,然后运行应用程序

当然,你应该改回为建设意在外面跑一个控制台应用程序IDE。

(与Visual Studio 2008和2010年进行测试,预计应该在后面的版本中工作太)

+0

这工作。谢谢。 – Kenci 2015-05-18 13:25:28

+0

如果您希望快速复制应用程序的结果,这是一个更好的方法。 – 2015-10-16 16:26:09

+0

为什么Console.Writeline无法在控制台应用程序中使用?这听起来非常直观。 – sydd 2018-02-07 08:46:05

1

如果你正在开发一个命令行应用程序,您还可以使用Console.ReadLine()在你的代码结束等待在关闭控制台窗口之前按'Enter'键,以便读取输出。但是,上面列出的跟踪和调试答案都是更好的选择。