设置光标相对于最后一行文本的位置 |C# 控制台应用



美好的一天

如果这是控制台的输出:

.
.
.
.
Hello World!

我想设置光标的位置,比如从最后一行文本开始 20 行。在最后一行明显不断变化的情况下,我将如何做到这一点?

谢谢你的时间。

Console.SetCursorPosition(Console.CursorLeft, (Console.CursorTop+20))

传递 CursorLeft 会将其保持在相同的左侧位置,如果这对您很重要的话。否则,您可以只传递 0。

Console.SetCursorPosition(0, (Console.CursorTop+20))
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace CUrsorPosition
{
class Program
{
static int lastCursorLocation = 0;
//customCursorPosition say which line number you want the cursor to //set after the last text for example i have set it to 1 so next line to hellow //world
static int customCursorPosition = 1;
static void Main(string[] args)
{
// int customCursorPosition = 0;
WriteLine(".");
WriteLine(".");
WriteLine(".");
WriteLine(".");
int x = Console.CursorLeft;
int y = Console.CursorTop;
Console.CursorTop = Console.WindowTop + Console.WindowHeight - 1;
Console.SetCursorPosition(x, y);
WriteLine("Hello World");
Console.SetCursorPosition(0, y+ customCursorPosition);
Console.ReadLine();

}
static void WriteLine(string message, [CallerLineNumber] int lineNumber = 0)
{
Console.WriteLine(lineNumber + ": " + message);
}
static void WriteLine(string message)
{
StackFrame callStack = new StackFrame(1, true);
var lineNumber = callStack.GetFileLineNumber();
lastCursorLocation = callStack.GetFileLineNumber();
Console.WriteLine(message);
}
}
}

最新更新