C# 绘制框设置光标

本文关键字:置光标 绘制 | 更新日期: 2023-09-27 18:33:23

我正在尝试在控制台中绘制一个框,但是如果不输入新行,我就无法做到这一点。

我做了这样的东西:

-----
|   |
_____

但是输入行直接位于其下方,并删除了框的上行。

我尝试了Console.setCursorPosition但最后一行已经填满,因此已经创建了一个新行。

如何防止创建新行?

提前致谢

编辑是否可以将控制台窗口用作画布?假设一个具有以下大小的窗口

高度 : 50宽度 : 100

我可以在上述给定控制台大小内的任何磁贴上放置任何字符。

如果是这样,这可能吗?

C# 绘制框设置光标

如果您发布您编写的代码以从 ASCII 字符创建此框,这将很有帮助。

如果使用 Console.WriteLine() ,只需对最后一行使用Console.Write()方法即可。因此,对于问题中的框,代码可能如下所示:

...
Console.WriteLine("-----");
Console.WriteLine("|   |");
Console.Write("-----");
...

让我知道这是否有帮助。

我在示例应用程序中进行了测试,但似乎没有创建额外的行。

更新

如果您想将该框用作控制台窗口的边框,我想最简单的解决方案(如果不是唯一的解决方案(是不在您正在绘制的框的底行中添加最后一个 - 字符。

更新二

您可以尝试使用简单的技巧,并在绘制最后一行之前动态更改控制台窗口的高度。这将阻止窗口滚动。

尝试这样的代码:

int width = Console.WindowWidth;
int height = Console.WindowHeight;
int i, j;
for (i = 0; i < width; ++i)
{
    Console.Write("-");
}
for (j = 0; j < height - 2; ++j)
{
    Console.Write("|");
    for (i = 0; i < width - 2; ++i)
    {
        Console.Write(" ");
    }
    Console.Write("|");
}
//enlarge window in order to prevent it from being scrolled
Console.WindowHeight += 1;
for (i = 0; i < width; ++i)
{
    Console.Write("-");
}
//restore window's original size
Console.WindowHeight -= 1;
//set cursor inside the border
Console.SetCursorPosition(1, 1);

这应该允许您在窗口中显示整个边框。

更新三

建议的解决方案

使用上面的代码,但使用 Console.BufferWidth 而不是 Console.WindowHeight 。它似乎工作正常,不需要修改窗口的尺寸。

我认为这个非常相似的任务有Microsoft的人。看一看:

http://msdn.microsoft.com/en-us/library/system.console.setcursorposition.aspx有一些非常相似的东西。希望这有帮助。

编辑:

Console.Write("'b'b");

这应该删除换行符的最后"''r'"字符。