Console.WriteLine ไม่ปรากฏในหน้าต่างผลลัพธ์


87

ฉันได้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);

    }
}

ใครช่วย ??


แก้ไขปัญหาเขียนโค้ดผิดวิธี เรียบเรียงไม่ถูกต้อง
sark9012

คำตอบ:


57

หากคุณต้องการใช้เอาต์พุตนี้ในการผลิตให้ใช้สมาชิกคลาสTrace สิ่งนี้ทำให้โค้ดพกพาได้คุณสามารถเชื่อมต่อ Listener ประเภทต่างๆและเอาต์พุตไปยังหน้าต่างคอนโซลหน้าต่างดีบักไฟล์บันทึกหรืออะไรก็ได้ที่คุณต้องการ

หากนี่เป็นเพียงโค้ดดีบักชั่วคราวบางส่วนที่คุณใช้เพื่อตรวจสอบว่ามีการเรียกใช้โค้ดบางตัวหรือมีค่าที่ถูกต้องให้ใช้คลาสDebugตามที่Zachแนะนำ

หากคุณต้องใช้คอนโซลอย่างแน่นอนคุณสามารถแนบคอนโซลด้วยMainวิธีการของโปรแกรม


110

Consoleส่งออกไปยังหน้าต่างคอนโซลและแอปพลิเคชัน Winforms ไม่แสดงหน้าต่างคอนโซล คุณควรจะสามารถใช้System.Diagnostics.Debug.WriteLineเพื่อส่งเอาต์พุตไปยังหน้าต่างเอาต์พุตใน IDE ของคุณ

แก้ไข:ในส่วนของปัญหาคุณได้ตรวจสอบmainForm_Loadว่าถูกเรียกจริงหรือไม่? คุณสามารถวางจุดพักไว้ที่จุดเริ่มต้นmainForm_Loadเพื่อดู ถ้าไม่ถูกเรียกฉันสงสัยว่าmainForm_Loadจะไม่ติดLoadงาน

นอกจากนี้ยังมีประสิทธิภาพมากกว่าและโดยทั่วไปแล้วจะดีกว่าในการลบล้างOn{EventName}แทนที่จะสมัครสมาชิก{EventName}จากภายในคลาสที่ได้รับ (ในกรณีของคุณแทนที่OnLoadแทนLoad)


5
แบบนี้? System.Diagnostics.Debug.WriteLine ("บาง tetttttttt23423423423423423ttttttttttttttttttttttttt");
sark9012

2
@ ลุค - ใช่ แต่คุณสามารถImport System.Diagnosticsทำให้ง่ายขึ้นได้มาก และฉันชอบใช้Traceคลาสนี้มากกว่า
Joel Coehoorn

2
ในแถบนำทางด้านบนของ Visual Studio ไปดู> System.Diagnostics.Debug.WriteLineขาออกเพื่อดูค่าจาก
Chad Kuehn

13

หากคุณต้องการให้Console.WriteLine("example text")เอาต์พุตแสดงในหน้าต่าง Debug Output ให้เปลี่ยนประเภทเอาต์พุตของแอปพลิเคชันของคุณจาก Console Application เป็น Windows Application ชั่วคราว

จากเมนูให้เลือก Project + Properties และไปที่ประเภทเอาต์พุต: เลื่อนลงเปลี่ยนเป็น Windows Application จากนั้นเรียกใช้แอปพลิเคชันของคุณ

แน่นอนว่าคุณควรเปลี่ยนกลับเพื่อสร้างแอปพลิเคชันคอนโซลที่ตั้งใจให้ทำงานนอก IDE

(ทดสอบด้วย Visual Studio 2008 และ 2010 คาดว่าน่าจะใช้งานได้ในเวอร์ชันหลัง ๆ ด้วย)


นี่เป็นวิธีที่ดีกว่าหากคุณต้องการคัดลอกผลลัพธ์ของแอปพลิเคชันของคุณอย่างรวดเร็ว
Mark Kram

2
เหตุใด Console.Writeline จึงไม่ทำงานในแอปพลิเคชัน Console สิ่งนี้ฟังดูเป็นเรื่องง่ายมาก
sydd

^^ ใช่อะไร? สิ่งนี้ได้ผลเสมอ และตอนนี้มันไม่ใช่ รู้สึกเหมือนเป็นข้อบกพร่องใน Visual Studio
Triynko

4

การใช้Console.WriteLine( "Test" );สามารถเขียนข้อความบันทึกไปยังหน้าต่างแสดงผล (View Menu -> Output) ใน Visual Studio สำหรับโครงการ Windows Forms / WPF

อย่างไรก็ตามฉันพบกรณีที่มันใช้งานไม่ได้และใช้งานSystem.Diagnostics.Debug.WriteLine( "Test" );ได้เท่านั้น ฉันรีสตาร์ท Visual Studio และConsole.WriteLine()เริ่มทำงานอีกครั้ง ดูเหมือนจะเป็นข้อบกพร่องของ Visual Studio


และนอกจากนี้ยังมี; การสร้างสิ่งต่างๆใน VS สลับหน้าต่างเอาต์พุตเพื่อสร้าง ตอนนี้ฉันต้องคลิกเอาต์พุตเปลี่ยนรายการใน 'แสดงผลลัพธ์จาก' และเลื่อนดูข้อความอื่น ๆ อีกหลายสิบข้อความ
คริสเตียน

1

หากคุณกำลังพัฒนาแอปพลิเคชันบรรทัดคำสั่งคุณยังสามารถใช้Console.ReadLine()ที่ส่วนท้ายของโค้ดเพื่อรอการกดปุ่ม "Enter" ก่อนปิดหน้าต่างคอนโซลเพื่อให้คุณสามารถอ่านผลลัพธ์ของคุณได้ อย่างไรก็ตามทั้งคำตอบ Trace และ Debug ที่โพสต์ไว้ข้างต้นเป็นตัวเลือกที่ดีกว่า


1

ลองยกเลิกการเลือกช่องทำเครื่องหมาย“ ใช้โหมดความเข้ากันได้ที่มีการจัดการ” ใน

Tools => Options => Debugging => General

มันได้ผลสำหรับฉัน


ฉันใช้สิ่งนี้เมื่อทำการดีบักโปรเจ็กต์ cpp / cli ก่อนหน้านี้และเห็นได้ชัดว่าทำให้เกิดปัญหานี้เช่นเดียวกับ NLog ไม่เข้าสู่คอนโซล
Blackey

0

เมื่อเกิดปัญหาบน Mac VS 2017 (ที่ฉันเผชิญ)

  1. ไปที่โครงการ >> ตัวเลือก "ชื่อโครงการของคุณ"
  2. หน้าต่างตัวเลือกจะปรากฏขึ้น
  3. ไปที่ RUN >> ตัวเลือกเมนูเริ่มต้น
  4. เลือกตัวเลือก "Run on external console" TRUE แล้วพูดว่า OK

เรียกใช้รหัสแอปพลิเคชันของคุณตอนนี้


-1

เธรดเก่า แต่ในคอนโซล VS 2015.WriteLine ไม่เขียนไปยังหน้าต่างเอาต์พุตหากไม่เลือก "เปิดใช้งานกระบวนการโฮสติ้ง Visual Studio" หรือปิดใช้งานในคุณสมบัติโครงการ -> แท็บดีบัก


-3

เลือกมุมมอง >> เอาต์พุตเพื่อเปิดหน้าต่างเอาต์พุต

ในหน้าต่างผลลัพธ์คุณจะเห็นผลลัพธ์


1
สิ่งนี้ไม่ตอบคำถาม ผู้ใช้ระบุว่าพวกเขาอยู่ที่หน้าต่าง OUTPUT โดยเฉพาะ (ดังนั้นจึงมีการเลือกไว้)
Richard Duerr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.