2010-04-19 80 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'鍵,以便讀取輸出。但是,上面列出的跟蹤和調試答案都是更好的選擇。