代码之家  ›  专栏  ›  技术社区  ›  Valdemarick

使用system.console.write禁用滚动

  •  0
  • Valdemarick  · 技术社区  · 16 年前

    是否可以使用console.write在典型的80x25控制台右下角放置一个字符,而不需要让控制台向上滚动行?这是我使用的代码…

    Imports System
    Console.SetCursorPosition(Console.WindowWidth-1, Console.WindowHeight-1)
    Console.Write("x")
    

    这并不像我想的那样有效。有什么建议或选择吗?我已经测试了setCursorPosition是否已经使用了0,0坐标系。使用windowwidth-1/height-1应该把我放在屏幕的右下角…它是这样做的,但接着是console.write将“x”放下并继续下一行。

    3 回复  |  直到 13 年前
        1
  •  4
  •   aphoria    16 年前

    您可以尝试移动缓冲区。例如:

    Console.WriteLine("Top")
    Console.SetCursorPosition(Console.WindowWidth - 1, Console.WindowHeight - 1)
    Console.Write("x")
    Console.MoveBufferArea(0, 0, 80, 25, 0, 1)
    Console.ReadLine()
    
        2
  •  0
  •   adeel825    16 年前

    问题是,每当您写入特定行中的最后一个位置时,控制台总是将您移动到下一行。你能做的最接近的事情就是写到第二个最后的位置:

            Console.CursorLeft = Console.WindowWidth - 1;
            Console.Write("X");
    
        3
  •  0
  •   Jason Plank Maksim Kondratyuk    13 年前

    我用肮脏但实用的方式解决了它。

    Console.SetCursorPosition(79, 24); //last pos
    Console.BufferWidth++;
    Console.Write("x");
    Console.BufferWidth--;
    Console.ReadKey();
    

    盒子的侧面确实会闪烁一毫秒,但我认为没有人会注意到:)