C# 退格赢了';t功能正常

C# 退格赢了';t功能正常,c#,string,console-application,backspace,C#,String,Console Application,Backspace,我正在尝试创建一个屏幕,用户可以在其中用StringBuilder写下自己的名字。我遇到的问题是backspace的功能。除了按下的第一个字母,我可以删除所有字母。而且,似乎我可以按任何字符,它将被提交 ConsoleKeyInfo cki = new ConsoleKeyInfo(); bool enterPressed = false; StringBuilder name = new StringBuilder(); int temp = 61; do { Console.SetC

我正在尝试创建一个屏幕,用户可以在其中用StringBuilder写下自己的名字。我遇到的问题是backspace的功能。除了按下的第一个字母,我可以删除所有字母。而且,似乎我可以按任何字符,它将被提交

ConsoleKeyInfo cki = new ConsoleKeyInfo();
bool enterPressed = false;
StringBuilder name = new StringBuilder();
int temp = 61;
do
{
    Console.SetCursorPosition(temp, 14);
    cki = Console.ReadKey(true);
    if (cki.Key == ConsoleKey.Enter && name.Length > 0 && name.Length < 12)
    {
        enterPressed = true;
        Console.SetCursorPosition(61, 18);
        Console.Write(name);
    }
    else if ("qwertyuiopasdfghjklzxcvbnm".Contains(cki.KeyChar) && name.Length < 12)
    {
         name.Append(cki.KeyChar);
         Console.Write(cki.KeyChar);
         temp += 1;
    }
    else if(cki.Key == ConsoleKey.Backspace && name.Length > 0)
    {
         name.Remove(name.Length-1, 1);
         Console.Write("\b \b");
    }
} while (name.Length > 0 && !enterPressed);
ConsoleKeyInfo cki=new ConsoleKeyInfo();
bool enterPressed=false;
StringBuilder名称=新的StringBuilder();
内部温度=61;
做
{
控制台。设置光标位置(温度,14);
cki=控制台.ReadKey(真);
如果(cki.Key==ConsoleKey.Enter&&name.Length>0&&name.Length<12)
{
enterPressed=true;
控制台。设置光标位置(61,18);
控制台。写入(名称);
}
else if(“qwertyuiopasdfghjklzxcvnm”.Contains(cki.KeyChar)和&name.Length<12)
{
name.Append(cki.KeyChar);
Console.Write(cki.KeyChar);
温度+=1;
}
else if(cki.Key==ConsoleKey.Backspace&&name.Length>0)
{
name.Remove(name.Length-1,1);
Console.Write(“\b\b”);
}
}而(name.Length>0&&!按下);

你忘了做
临时--
这个代码片段应该可以解决您的问题

                name.Remove(name.Length - 1, 1);
                temp--;
                Console.Write("\b \b");
你可以试试下面的代码

  console.Writeline("Enter Your Name");
  string name= console.Readline();
如果您不想使用上述解决方案,请更新以下内容

if(cki.Key == ConsoleKey.Backspace && name.Length >= 0)
{
    if (name.Length == 0)
    {
        name.Remove(0, 0);
    }
    else
    {
        name.Remove(name.Length - 1, 1);
    }
     temp--;
    Console.Write(" ");   
}

您知道Console.ReadLine()吗?我想这已经是你想要的了。