Как показать вывод консоли / окно в приложении форм? - PullRequest
109 голосов
/ 06 декабря 2010

Чтобы застрять сразу, очень простой пример:

using System;
using System.Windows.Forms;

class test
{ 
    static void Main()
    { 
        Console.WriteLine("test");
        MessageBox.Show("test");
    }
}

Если я скомпилирую это с параметрами по умолчанию (используя csc в командной строке), как и ожидалось, он скомпилируется в консольное приложение. Кроме того, поскольку я импортировал System.Windows.Forms, он также покажет окно сообщения.

Теперь, если я использую опцию /target:winexe, которая, я думаю, такая же, как и выбор Windows Application из опций проекта, как и ожидалось, я увижу только окно сообщений и никакой вывод консоли.

(На самом деле, в тот момент, когда он запускается из командной строки, я могу выполнить следующую команду еще до того, как приложение будет завершено).

Итак, мой вопрос - я знаю, что вы можете иметь вывод "windows" / форм из консольного приложения, но есть ли способ показать консоль из приложения Windows?

Ответы [ 11 ]

0 голосов
/ 26 марта 2019

Почему бы просто не оставить его как приложение Window Forms и создать простую форму для имитации Консоли. Форма может выглядеть так же, как консоль с черным экраном, и она может реагировать непосредственно на нажатие клавиши. Затем в файле program.cs вы решаете, нужно ли запускать основную форму или ConsoleForm. Например, я использую этот подход для захвата аргументов командной строки в файле program.cs. Я создаю ConsoleForm, сначала скрываю его, затем передаю строки командной строки в функцию AddCommand, которая отображает разрешенные команды. Наконец, если пользователь дал -h или -? Команда, я вызываю .Show на ConsoleForm, и когда пользователь нажимает любую клавишу на нем, я закрываю программу. Если пользователь не дает -? По команде закрываю скрытую ConsoleForm и запускаю основную форму.

...