Я нашел некоторый исходный код в этой теме, опубликованный Рексом Логаном здесь на SO:
текст ссылки
... есть также очень интересный код, опубликованный в этой же теме Foredecker, но он неполный и сложный: я недостаточно осведомлен о возможности 'Trace', чтобы знать, как полностью реализовать ее .
Я могу использовать этот консольный код Rex (любезно), успешно опубликованный в приложении WinForms, для регистрации различных событий и отправки сообщений, которые полезны при отладке; Я могу также очистить его от кода приложения.
То, что я не могу сделать, это надежно установить положение экрана в окне консоли, когда я открываю окно консоли (в событии загрузки основной формы). Я получаю ошибки System.ArgumentOutOfRangeException, блокирующие компиляцию, если я пытаюсь установить свойства WindowLeft или WindowTop следующим образом:
Положение окна должно быть установлено таким
что соответствует текущему размеру окна
в буфере консоли, и
числа не должны быть отрицательными.
Имя параметра: слева Фактическое значение было
#
Однако я могу установить свойства WindowWidth и WindowHeight.
Я попытался переместить код, который активирует консоль, в различные места, включая:
- в файле Program.cs до того, как MainForm будет запущена
- до и после вызова 'InitializeComponent () в ctor MainForm
- в событии загрузки формы
- в форме Показано событие
Консоль была активирована нормально во всех этих местах кода, но без каких-либо изменений в кажущемся случайным переключении мест, где она находилась в верхнем левом квадранте экрана.
Кажется, что случай, когда открывается окно консоли, меняется случайным образом (основная форма всегда инициализируется в одном и том же месте на экране).