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