StartIndex не может быть меньше нуля. Ошибка при получении - PullRequest
0 голосов
/ 11 января 2020

У меня есть кнопка для удаления последней строки в текстовом поле. Пока работает, удаляет все в последней строке так, как я хочу. Вот код для этого

    private void Button1_Click(object sender, EventArgs e)
        {
            textbox1.Text = textbox1.Text.Remove(textbox.Text.LastIndexOf(Environment.NewLine));
            }

, но если нажать эту кнопку еще раз после того, как все будет удалено из текстового поля, я получаю сообщение об ошибке, говорящее

StartIndex не может быть меньше нуля

так что я сделал это ...

    private void Button1_Click(object sender, EventArgs e)
        {
          if (textbox1.Text == "")
            { }

            else 
            {
                textbox1.Text = textbox1.Text.Remove(textbox1.Text.LastIndexOf(Environment.NewLine));
            }

        }

и он все еще позволяет мне удалить последнюю строку ... и ошибка повторяется.

ЛЮБЫЕ ПРЕДЛОЖЕНИЯ?

1 Ответ

2 голосов
/ 11 января 2020

Результат второй попытки найти индекс символа новой строки возвращает -1, поскольку символа новой строки больше нет.

Вы можете выполнить проверку indexOf как свой собственный оператор и только продолжить с удалением, если оно не равно -1.

int index = textbox.Text.LastIndexOf(Environment.NewLine);
if(index > -1) {  
   textbox1.Text = textbox1.Text.Remove(index);
}

В качестве альтернативы, просто проверьте длину textbox.text, прежде чем пытаться выполнить удаление.

...