Console.WriteLine не відображається у вікні виводу


85

Я 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

Відповіді:


56

Якщо ви збираєтеся використовувати цей результат у виробництві, використовуйте члени класу Trace . Це робить код портативним, ви можете підключати різні типи прослуховувачів та виводити їх у вікно консолі, вікно налагодження, файл журналу або що завгодно інше.

Якщо це лише якийсь тимчасовий код налагодження, який ви використовуєте для перевірки того, що певний код виконується або має правильні значення, тоді використовуйте клас Debug, як пропонує Зак .

Якщо вам обов’язково потрібно використовувати консоль, тоді ви можете підключити консоль у Mainметоді програми .


109

Consoleвиходи у вікно консолі, а програми Winforms не відображають вікно консолі. Ви повинні мати можливість використовувати System.Diagnostics.Debug.WriteLineдля надсилання вихідних даних у вікно виводу у вашій IDE.

Змінити: Що стосується проблеми, чи підтвердили ви, що вас mainForm_Loadнасправді телефонують? Ви можете розмістити точку зупинки на початку, mainForm_Loadщоб побачити. Якщо його не викликають, я підозрюю, що mainForm_Loadвін не підключений до Loadподії.

Крім того, це ефективніше і, як правило, краще замінити On{EventName}замість того, щоб підписуватися {EventName}з похідних класів (у вашому випадку заміщати OnLoadзамість Load).


5
Подобається це? System.Diagnostics.Debug.WriteLine ("деякий tetttttttttt23423423423423423ttttttttttttttttттттт");
sark9012

2
@Luke - так, але ви можете Import System.Diagnosticsзробити це набагато простішим. І я вважаю за краще використовувати Traceдля цього клас.
Джоел Коухорн,

2
На верхній навігаційній панелі Visual Studio перейдіть до Перегляд> Вивід, щоб переглянути значення з System.Diagnostics.Debug.WriteLine.
Чад Кюн,

13

Якщо ви хочете, щоб Console.WriteLine("example text")вихідні дані відображались у вікні налагодження, тимчасово змініть тип виводу своєї програми з консольної програми на програму Windows.

У меню виберіть Проект + Властивості та перейдіть до Вихідний тип: спадне меню, перейдіть до Програми Windows, а потім запустіть програму

Звичайно, вам слід змінити його назад для створення консольного додатка, призначеного для роботи за межами IDE.

(протестовано на Visual Studio 2008 та 2010, очікуємо, що він також повинен працювати в останніх версіях)


Це кращий спосіб, якщо ви хочете швидко скопіювати результати своєї заявки.
Mark Kram

2
Чому Console.Writeline не працює в додатку Console? Це звучить надзвичайно інтуїтивно.
sydd

^^ Так, що? Це завжди спрацьовувало. А зараз це не так. Це схоже на помилку у Visual Studio.
Трійко

3

Використання Console.WriteLine( "Test" );вміє писати журнальні повідомлення у вікно виводу (меню перегляду -> вихід) у Visual Studio для проекту Windows Forms / WPF.

Однак я зіткнувся з випадком, коли він не працював і працював лише System.Diagnostics.Debug.WriteLine( "Test" );. Я перезапустив Visual Studio і Console.WriteLine()знову почав працювати. Здається, помилка Visual Studio.


1

Якщо ви розробляєте програму командного рядка, ви також можете використовувати Console.ReadLine()кінець коду, щоб дочекатися натискання клавіші "Enter" перед закриттям вікна консолі, щоб ви могли прочитати свої результати. Однак відповіді на Trace та Debug розміщені вище - кращі варіанти.


1

Спробуйте зняти прапорець біля пункту «Використовувати режим керованої сумісності» в

Інструменти => Параметри => Налагодження => Загальне

У мене це спрацювало.


У мене це було під час налагодження попереднього проекту cpp / cli і, мабуть, спричиняє цю проблему, а також те, що NLog не входить до консолі.
Blackey

0

Коли проблема виникла на Mac VS 2017 (з якою я стикався).

  1. Перейдіть до проекту >> Параметри "Назва вашого проекту".
  2. З'явиться вікно опцій
  3. Перейдіть до пункту RUN >> Параметр меню за замовчуванням
  4. Поставте прапорець біля пункту "Запустити на зовнішній консолі" TRUE і скажіть "OK"

Запустіть код програми зараз.


-1

Стара тема, але в VS 2015 Console.WriteLine не записує у вікно виводу, якщо параметр "Увімкнути процес хостингу Visual Studio" не позначений або його вимкнено у Властивості проекту -> Вкладка Налагодження


-3

Виберіть вигляд >> Вихід, щоб відкрити вікно виводу.

У вікні виводу ви можете побачити результат


1
Це не відповідає на запитання. Користувач конкретно каже, що вони перебувають у вікні ВИХІД (і, отже, вибрали це).
Річард Дюрр,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.