您好我正在编写文本编辑器。 我有这个代码用于添加括号:
char? lastChar = null;
if (richTextBox.Text != "")
{
lastChar = richTextBox.Text[richTextBox.TextLength - 1];
}
if(lastChar == '(')
{
richTextBox.AppendText(")");
}
当它添加这些括号时,它不能用退格键删除。
答案 0 :(得分:0)
您无法删除它的原因是,只要您按Backspace
,您的文字就会再次以'('
结尾,并附加另一个')'
。要禁用此功能,我们需要跟踪按下的键是否为Backspace
键,如果是,请跳过您的逻辑(允许用户在自动附加的')'
字符上退格并输入一些文本)。
假设您的代码在TextChanged
事件中,您可以做的一件事就是创建一个私有变量,如果密钥是Backspace,则会在KeyDown
事件中设置该变量,然后您将在TextChanged
事件。
作为奖励,我将您现有的代码简化为一行:)
private bool lastKeyPressedWasBackspace;
private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{
lastKeyPressedWasBackspace = e.KeyCode == Keys.Back;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
if (!lastKeyPressedWasBackspace && richTextBox.Text.EndsWith("("))
{
richTextBox.AppendText(")");
}
}