2016-09-16 3 views
1

사용자가 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); 
+5

Console.ReadLine()을 알고 있습니까? 그건 이미 네가 원하는 걸하는거야. –

답변

1

당신은 temp--; 을 깜빡이 코드는

   name.Remove(name.Length - 1, 1); 
       temp--; 
       Console.Write("\b \b"); 
1

당신은 아래의 코드

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