2

我想创建一个在任何给定坐标处打印出字符串的程序。我有一个主类和一个我创建的名为 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();
    }
}

我现在的问题是,当我调试程序时,我得到了坐标的位置,但是字符串并没有在那个特定的坐标处写出。关于我可能做错了什么的任何想法?

4

4 回答 4

1

以下代码非常适合我:

Console.SetCursorPosition(20, 0);
Console.WriteLine("Hello");
Console.SetCursorPosition(20, 2);
Console.WriteLine("World");
Console.ReadLine();

您可能想探索为什么要使用自定义类。

编辑:此外,ConsoleObj 类中 x 和 y 的值从未被引用。只是指出这一点。

于 2013-02-09T21:37:37.610 回答
1

尝试更改此行:

Console.ForegroundColor = color;

对此:

Console.ForegroundColor = ConsoleColor.Gray;

您无意中将前景色设置为黑色。

于 2013-02-09T21:55:11.557 回答
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();
    }
于 2013-02-09T22:49:16.263 回答
0

查看 MSDN 中的SetCursorPosition API 文档。显然,光标位置必须相对设置。使用 Console.Clear() 重置光标位置,然后获取顶部、左侧。API Doc 展示了如何做到这一点。

Console.SetCursorPosition(x + ConsoleCursor.Left, y + ConsoleCursor.Top);
于 2013-02-09T21:40:31.973 回答