用C#语言写的控制台的程序,如何来清屏。

解决方案 »

  1.   

    namespace clears
    {
    using System;
    using System.Runtime.InteropServices;
    using System.Text;
    class StdHandleEnum
    {
       public const int STD_INPUT_HANDLE   = -10;
       public const int STD_OUTPUT_HANDLE  = -11;
       public const int STD_ERROR_HANDLE   = -12;
    };// This sructure contains a screen coordinate.
    class cls
    {
       internal struct COORD
    {
       public short X;
       public short Y;
    }// This stucture contains information about the
    // console screen buffer.
    [StructLayout(LayoutKind.Sequential, Pack=1)]
       internal struct CONSOLE_SCREEN_BUFFER_INFO
    {
       public COORD      Size;
       public COORD      p1;
       public short      a1;
       public short      w1;
       public short      w2;
       public short      w3;
       public short      w4;
       public COORD      m1;
    }// We need these four functions from KERNEL32.DLL.
    // The GetStdHandle() function returns a handle to any
    // standard input or output.
    [DllImport("kernel32.dll")]
    public static extern int GetStdHandle(int nStdHandle);// The GetConsoleScreenBufferInfo() returns information
    // about the console screen buffer so we know how much to
    // clear.
    [DllImport("kernel32.dll")]
    public static extern bool GetConsoleScreenBufferInfo(int hConsoleOutput,   out CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);// The SetConsoleCursorPosition() places the cursor on
    // the console screen.
    [DllImport("kernel32.dll")]
    public static extern bool SetConsoleCursorPosition(int hConsoleOutput,   COORD dwCursorPosition);// The FillConsoleOutputCharacter() allows us to place
    // any character on the console screen. Using a space
    // clears the display area.
    [DllImport("kernel32.dll",SetLastError=true,CharSet=CharSet.Auto)]
    public static extern bool FillConsoleOutputCharacter(int hConsoleOutput, short cCharacter, int nLength, COORD WriteCoord,   out int lpNumberOfCharsWritten);[STAThread]
    static void Main(string[] args)
    {
       // Needed ask Windows about the console screen
       // buffer settings.
       CONSOLE_SCREEN_BUFFER_INFO CSBI;
       // Handle to the output device.
       int hOut;
       // Number of characters written to the screen.
       int CharOut;
       // Home cursor position.
       COORD Home;   // Write some data to the screen.
       Console.Write("Clear the Screnn!" +
                     "\r\nPress any key...");
       Console.ReadLine();   // Clear the screen.
       // Begin by getting a handle to the console screen.
       hOut = GetStdHandle(StdHandleEnum.STD_OUTPUT_HANDLE);   // Get the required console screen buffer information.
       GetConsoleScreenBufferInfo(hOut, out CSBI );   // Set the home position for the cursor.
       Home.X = 0;
       Home.Y = 0;   // Fill the console with spaces.
       FillConsoleOutputCharacter(hOut,
                                 (short) ' ',
                                 CSBI.Size.X * CSBI.Size.Y,
                                 Home,
                                 out CharOut);   // Place the cursor in the upper left corner.
       SetConsoleCursorPosition(hOut, Home);   // Show the screen is clear.
       Console.ReadLine();
    }
    }
    }
     fupip(小贝)大大的帖子
    http://search.csdn.net/Expert/topic/1418/1418868.xml?temp=.9960443
    -_____________-b
      

  2.   

    这么多人问这个问题啊。
       Win32Native.COORD coord1;
          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;
          bool flag1 = Win32Native.FillConsoleOutputCharacter(ptr1, ' ', num1, coord1, out num2);
          if (!flag1)
          {
                __Error.WinIOError();
          }
          num2 = 0;
          flag1 = Win32Native.FillConsoleOutputAttribute(ptr1, console_screen_buffer_info1.wAttributes, num1, coord1, out num2);
          if (!flag1)
          {
                __Error.WinIOError();
          }
          flag1 = Win32Native.SetConsoleCursorPosition(ptr1, coord1);
          if (!flag1)
          {
                __Error.WinIOError();
          }
      

  3.   

    把 hatita(悠远的风景)发的程序改一改,加到你的程序里去就可以清屏了把static void Main(string[] args)改成 static void Clear()
    删掉    // Write some data to the screen.
       Console.Write("Clear the Screnn!" +
                     "\r\nPress any key...");
       Console.ReadLine();
    等其他的加到程序的对应位置
    以后直接调用Clear(),就可以实现清屏了。