C# 处理退格时使用SelectionStart的InvalidArgument
我刚开始使用C语言。我在Windows窗体中创建了一个简单的文本编辑器,该编辑器将文本文件加载到只读的富文本框中。如果我选择使用编辑按钮编辑文件,则会弹出Form2,并允许我附加或删除字符。 我遇到的问题是,如果光标位于文本文件的开头,并且我按下了我所做的退格按钮,我会得到一个异常InvalidArgument=值'-1'对于'SelectionStart'无效。 我已经尝试了很多事情,在尝试了一整天不同的事情之后,我想知道能做些什么来解决这个问题C# 处理退格时使用SelectionStart的InvalidArgument,c#,richtextbox,C#,Richtextbox,我刚开始使用C语言。我在Windows窗体中创建了一个简单的文本编辑器,该编辑器将文本文件加载到只读的富文本框中。如果我选择使用编辑按钮编辑文件,则会弹出Form2,并允许我附加或删除字符。 我遇到的问题是,如果光标位于文本文件的开头,并且我按下了我所做的退格按钮,我会得到一个异常InvalidArgument=值'-1'对于'SelectionStart'无效。 我已经尝试了很多事情,在尝试了一整天不同的事情之后,我想知道能做些什么来解决这个问题 private void bu
private void button32_Click(object sender, EventArgs e) //BackSpace button
{
int index = richTextBox.SelectionStart - 1;
richTextBox.SelectionStart = index;
if (richTextBox.Text.Length < 1) MessageBox.Show(" Nothing to Undo ");
//Otherwise, delete character when button press, (one character at a time).
else
richTextBox.Text = richTextBox.Text.Remove(richTextBox.SelectionStart - 1, 1);
richTextBox.Focus();
}
任何帮助都将不胜感激。
谢谢。当光标放在文本开头时,index的值变为-1,这对于SelectionStart无效。请注意,您需要忽略该位置的backspace按钮,因为那里没有要删除的内容。因此,只需使用if:
根据您的建议修改代码后,异常消失了,但当光标回到第1行的开头时,消息框再也不显示,没有任何东西可以删除,并且焦点/光标不再在RichTextBox.OK中闪烁。messagebox的代码不清楚,因此您希望它显示光标是否在第一行的开头?是的。谢谢你的帮助。非常好。谢谢你。
private void button32_Click(object sender, EventArgs e)
{
int index = richTextBox.SelectionStart - 1;
if (richTextBox.Text.Length > 0 && index >= 0)
{
richTextBox.SelectionStart = index;
richTextBox.Text = richTextBox.Text.Remove(index, 1);
richTextBox.SelectionStart = index;
}
else
MessageBox.Show(" Nothing to Undo ");
richTextBox.Focus();
}