:) 我正在制作一个 C# 打字程序,我希望用户在输入错误的字母时无法输入任何内容,(我希望打字光标冻结在其位置)并且当他按下退格键时,只有这样他才能继续他的打字。
我通过操作 ConsoleScreenCursorCoordinates 在 C++ 中完成了这个程序,我尝试通过操作 textBox.Location 在 C# 中做同样的事情,但它没有用。
在我的程序中,有 2 个文本框,sourceTextBox 和 TypingTextBox 还有一个名为“文本”的字符串变量,它将通过 StreamReader 从文本文件中读取,然后我使用这个文本变量将其中的每个元素与用户的内容进行比较在打字。
我厌倦了这个:
bool madeMistake = false;
Point CurrentTypingPosition;
string whatIsWrittenBeforeTheMistake = "";
private void TypingTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
try
{
if (!madeMistake)
{
if (e.KeyChar == text[typingIndex])
{
typingIndex++;
}
else if (e.KeyChar == backspace)
{
typingIndex--;
}
else
{
CurrentTypingPosition = TypingTextBox.Location;
madeMistake = true;
TypingTextBox.Text += " ";
TypingTextBox.Location = CurrentTypingPosition;
whatIsWrittenBeforeTheMistake = TypingTextBox.Text;
}
}
else
{
if (e.KeyChar == backspace)
madeMistake = false;
else
{
TypingTextBox.Text = whatIsWrittenBeforeTheMistake;
TypingTextBox.Location = CurrentTypingPosition;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}