ASCII文字からこのボックスを作成するために作成したコードを投稿すると便利です。
を使用する場合は、代わりに最後の行にメソッドをConsole.WriteLine()
使用してください。Console.Write()
したがって、質問のボックスの場合、コードは次のようになります。
...
Console.WriteLine("-----");
Console.WriteLine("| |");
Console.Write("-----");
...
これが役立つかどうか教えてください。
サンプルアプリケーションでテストを行いましたが、余分な行が作成されていないようです。
アップデート
ボックスをコンソールウィンドウの境界線として使用する場合は、描画しているボックスの一番下の行に最後の文字を追加しないのが(唯一ではないにしても)最も簡単な解決策だと思います。
アップデートII
最後の線を描く前に、簡単なトリックを使用してコンソールウィンドウの高さを動的に変更することができます。これにより、ウィンドウがスクロールされなくなります。
次のようなコードを試してください。
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);
これにより、境界線全体がウィンドウに表示されるようになります。
アップデートIII
提案された解決策
上記のコードを使用しますが、のConsole.BufferWidth
代わりに使用しますConsole.WindowHeight
。正しく機能しているようで、ウィンドウのサイズを変更する必要はありません。