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

そしてここにprogram(main)クラスがあります:

class Program
{
    static void Main(string[] args)
    {
        ConsoleText obj = new ConsoleText(19, 1, "Hello!");
        Console.Read();
    }
}

私の問題は、プログラムをデバッグするときに、座標の位置を取得しても、文字列がその特定の座標に書き出されないことです。私が間違ったことをしたかもしれないという考えはありますか?

4

4 に答える 4

1

この行を変更してみてください:

Console.ForegroundColor = color;

これに:

Console.ForegroundColor = ConsoleColor.Gray;

うっかり前景色を黒に設定してしまいました。

于 2013-02-09T21:55:11.557 に答える
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 に答える
0

MSDN のSetCursorPosition API ドキュメントを見てください。どうやら、カーソル位置は相対的に設定する必要があります。Console.Clear() を使用してカーソル位置をリセットし、左上をフェッチします。API Doc は、これを行う方法を示しています。

Console.SetCursorPosition(x + ConsoleCursor.Left, y + ConsoleCursor.Top);
于 2013-02-09T21:40:31.973 に答える
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 に答える