刚开始使用C#。我在Windows窗体中创建一个简单的文本编辑器方面取得了一些成功,它将文本文件加载到只读,富文本框中。如果我选择使用"编辑"编辑文件。按钮,弹出Form2,允许我追加或删除字符。 我遇到的问题是,如果光标位于文本文件的开头,我按下我创建的退格按钮,我得到一个例外" InvalidArgument =' -1'对于' SelectionStart'无效。" 我尝试了很多东西,经过一整天尝试不同的事情后,我还想知道如何解决这个问题。
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();
}
任何帮助将不胜感激。 感谢。
答案 0 :(得分:0)
当光标位于文本的开头时,index
的值变为-1
,这不是SelectionStart
的有效值。请注意,您需要忽略该位置的退格按钮,因为没有任何内容可以删除。所以只需使用if
:
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();
}