\r\n в WinApi прокатывает нормально. Но прокатывает и \r. А \n — уже нет.
Сам я с WinForms не работал и не знаю, как устроена тамошняя обёртка. Потому и сказал: «какие-то символы для окончания строки». А вот Qt требует ВЕЗДЕ именно \n — видимо, преобразует сам.
Официальных реализаций WinApi для систем, где принят \n, не существует, потому никто не знает, правильно ли это — Environment.NewLine. Главное, что не заглючивает.
Я когда-то экспериментировал с матричным принтером — там символы CR и LF делали именно то, что говорит их название. Первый отводит каретку в начало строки, второй протягивает бумагу на строчку.
Окончание строки может передаваться символами Carriage Return (возврат каретки, 0D), Line Feed (перевод строки, 0A) или их комбинацией. В Unix принято LF, в DOS/Windows CR+LF, а в GUI WinApi (например, чтобы разорвать строку в MessageBox()) — CR.
Это из-за того, что вы сделали WriteLine, а не Write — значит, через порт будут переданы какие-то символы для окончания строки. В данном случае LineFeed.
Первое — видимо, разглючка на случай, если входной поток — файл.
А второе связано с особенностью работы консоли — разумеется, никто не будет перематывать кольцевую очередь, её бросят и заполнят снова.
Сам я с WinForms не работал и не знаю, как устроена тамошняя обёртка. Потому и сказал: «какие-то символы для окончания строки». А вот Qt требует ВЕЗДЕ именно \n — видимо, преобразует сам.
Официальных реализаций WinApi для систем, где принят \n, не существует, потому никто не знает, правильно ли это — Environment.NewLine. Главное, что не заглючивает.