c#控制台应用程序游标移动时删除字符

时间:2018-05-05 04:29:36

标签: c# console-application

我正在使用控制台应用程序上的记事本。当我按左,右,上,下键时,它应该移动光标。这是代码:

// For testing cursor moves
static void WriteMethod()
{
    bool Stop = false;
    Console.Clear();
    Console.SetCursorPosition(0, 0);
    foreach (string s in NoteLines){ Console.WriteLine(s); }

    // Stop'll be true when esc is pressed but I didn't added it yet
    while(Stop == false)
    {
        ConsoleKeyInfo key = Console.ReadKey();
        Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);

        switch (key.Key)
        {
            case ConsoleKey.LeftArrow:
                if (Console.CursorLeft > 0) Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
                else Console.SetCursorPosition(0, ((Console.CursorTop > 0) ? Console.CursorTop - 1 : 0));
                break;

            case ConsoleKey.RightArrow:
                if (Console.CursorLeft + 1 > Console.BufferWidth - 1) Console.SetCursorPosition(0, Console.CursorTop + 1);
                else Console.CursorLeft += 1;
                break;

            case ConsoleKey.UpArrow:
                    if (Console.CursorTop > 0) Console.CursorTop -= 1;
                    break;

            case ConsoleKey.DownArrow:
                    Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop + 1);
                    break;
            }            
        }
   }

是光标移动但在它离开之前删除它上面的字符。我该如何解决?

1 个答案:

答案 0 :(得分:2)

你可以试试这个,

ConsoleKeyInfo key = Console.ReadKey(true);
Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop);

Console.ReadKey(true)是一个可选参数,选择不显示读取键。 Console.ReadKey(Boolean)