C# 绘制框设置光标
本文关键字:置光标 绘制 | 更新日期: 2023-09-27 18:33:23
我正在尝试在控制台中绘制一个框,但是如果不输入新行,我就无法做到这一点。
我做了这样的东西:
-----
| |
_____
但是输入行直接位于其下方,并删除了框的上行。
我尝试了Console.setCursorPosition
但最后一行已经填满,因此已经创建了一个新行。
如何防止创建新行?
提前致谢
编辑是否可以将控制台窗口用作画布?假设一个具有以下大小的窗口
高度 : 50宽度 : 100
我可以在上述给定控制台大小内的任何磁贴上放置任何字符。
如果是这样,这可能吗?
如果您发布您编写的代码以从 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'"字符。