在特定坐标c#Console Application上打印一个字符串

时间:2013-02-09 21:32:33

标签: c# string printing

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

答案 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();
    }