我想创建一个程序,在任何给定的坐标处打印出一个字符串。我有一个主类和一个名为ConsoleText的类。以下是每个类的代码:
class ConsoleText
{
public int x, y; // Coordinates
public string Text = "Hello!";
ConsoleColor color;
public ConsoleText(int x, int y, string Text)
{
Console.ForegroundColor = color;
Console.SetCursorPosition(x, y);
Console.Write(Text);
Console.ResetColor();
}
}
这是程序(主)类:
class Program
{
static void Main(string[] args)
{
ConsoleText obj = new ConsoleText(19, 1, "Hello!");
Console.Read();
}
}
我现在的问题是,当我调试程序时,我得到坐标的位置,但字符串不会在该特定坐标处写出。关于我可能做错的任何想法?
答案 0 :(得分:1)
以下代码对我来说非常适合:
Console.SetCursorPosition(20, 0);
Console.WriteLine("Hello");
Console.SetCursorPosition(20, 2);
Console.WriteLine("World");
Console.ReadLine();
您可能想要探索为什么要使用自定义类。
编辑:此外,从不引用ConsoleObj类中的x和y值。只是指出了这一点。
答案 1 :(得分:1)
尝试更改此行:
Console.ForegroundColor = color;
到此:
Console.ForegroundColor = ConsoleColor.Gray;
您无意中将前景色设置为黑色。
答案 2 :(得分:0)
查看MSDN中的SetCursorPosition API文档。显然,光标位置必须相对设置。使用Console.Clear()重置光标位置,然后获取顶部,左侧。 API Doc's展示了如何做到这一点。
Console.SetCursorPosition(x + ConsoleCursor.Left, y + ConsoleCursor.Top);
答案 3 :(得分:0)
如果我理解了您的问题,那么您正在尝试同时打印消息和坐标。
class Program
{
static void Main(string[] args)
{
ConsoleText(19, 1, "Hello!");
Console.Read();
}
}
public static void ConsoleText(int x, int y, string Text)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(x, y);
Console.Write(string.Format("x:{0}, y:{1}, message:{2}", x, y, Text));
Console.ResetColor();
}