退格键无法正常工作
Backspace won't function correctly
我正在尝试创建一个屏幕,用户可以在其中使用 StringBuilder 写下他们的名字。我遇到的问题是退格键的功能。除了按下的第一个字母外,我可以删除所有字母。另外,好像我可以按任何字符,它就会被提交。
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);
你忘了做 temp--;
此代码段应该可以解决您的问题
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(" ");
}
我正在尝试创建一个屏幕,用户可以在其中使用 StringBuilder 写下他们的名字。我遇到的问题是退格键的功能。除了按下的第一个字母外,我可以删除所有字母。另外,好像我可以按任何字符,它就会被提交。
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);
你忘了做 temp--;
此代码段应该可以解决您的问题
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(" ");
}