Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как очистить консольное окно?


Автор: 6atoh 18.9.2006, 23:17
Как очистить консольное окно?

Автор: Bogdan1024 19.9.2006, 07:45
В фрэймворке этого сделать нельзя.

Добавлено @ 07:46 
Можно это сделать только через ВинАПИшные функции.

Автор: Tror 19.9.2006, 09:10
Код

Console.Clear();

Автор: Bogdan1024 19.9.2006, 09:47
Цитата(Tror @ 19.9.2006,  09:10)
Код

Console.Clear();

Вау, действительно smile Появилась с версии .нет2.0 smile

Автор: 6atoh 19.9.2006, 12:07
у меня framework 1.1 smile 

Автор: $tatic 19.9.2006, 16:18
Парадоксально, но вот так эту задачу решает Microsoft (декомпилировано Lutz Roeder's .NET Reflector):
Код

public static void Clear()
{
      Win32Native.COORD coord1 = new Win32Native.COORD();
      IntPtr ptr1 = Console.ConsoleOutputHandle;
      if (ptr1 == Win32Native.INVALID_HANDLE_VALUE)
      {
            throw new IOException(Environment.GetResourceString("IO.IO_NoConsole"));
      }
      Win32Native.CONSOLE_SCREEN_BUFFER_INFO console_screen_buffer_info1 = Console.GetBufferInfo();
      int num1 = console_screen_buffer_info1.dwSize.X * console_screen_buffer_info1.dwSize.Y;
      int num2 = 0;
      if (!Win32Native.FillConsoleOutputCharacter(ptr1, ' ', num1, coord1, out num2))
      {
            __Error.WinIOError();
      }
      num2 = 0;
      if (!Win32Native.FillConsoleOutputAttribute(ptr1, console_screen_buffer_info1.wAttributes, num1, coord1, out num2))
      {
            __Error.WinIOError();
      }
      if (!Win32Native.SetConsoleCursorPosition(ptr1, coord1))
      {
            __Error.WinIOError();
      }
}

Т.е. просто получаем буфер консоли, забиваем его пробелами, сбрасываем атрибуты символов и устанавливаем курсор на (1, 1).
Естественно реализовано все через WinAPI.
А теперь через 7 дней за вами придет Билли. smile

Автор: mr.DUDA 19.9.2006, 16:30
Хы, а делается во 2-м фреймворке это всё равно через ж... то есть через WinAPI... $static тут привёл пример.

Автор: $tatic 19.9.2006, 16:34
Нда smile

Автор: 6atoh 19.9.2006, 18:23
Прикольно...когда думал писать свою функцию тоже хотел заполнить пробелами smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)