处理退格时,使用SelectionStart的InvalidArgument

时间:2014-08-10 01:34:00

标签: c# richtextbox

刚开始使用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();
    }

任何帮助将不胜感激。 感谢。

1 个答案:

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