2015-12-06 2 views
1

Я пытаюсь пронумеровать каждую строку в RichTextBox. Я получил количество строк, используя Lines.Length. Если я начну вводить текст, когда он будет пустым, который изменится на 1, но если я нажму обратно на 2-3 раза, то начните вводить его.Richtextbox Lines.Length == -1

(Я знаю бессмысленно) Вот функция, возвращающая число линии, и вы можете увидеть (моя неудачная попытка), где я попытался сравнить его с TextLength, чтобы исправить значение.

private int LineCount() 
{ 
    int textLength = MainIOControl.TextLength; 
    int lineCount = MainIOControl.Lines.Length - 1; 
    return (textLength == 0 && lineCount == 0) ? 0 : lineCount; 
} 

Это возвращает правильное значение, если вы просто начать печатать, но если вы нажмете Backspace пару раз, когда она пуста.

Я просто пропустил что-то очевидное?

+0

Что возвращение, если нажать пару раз забоя, когда пустой. Что вы имеете в виду, когда оно пустое, когда поле richtext пустое или что? – mybirthname

+0

@mybirthname 'Lines.Length' возвращает 0 после нажатия backspace пару раз, но 1, если вы только начинаете вводить текст. Когда он пуст - когда в richtextbox нет текста/чисел/ничего. – 73cn0109y

+0

Когда вы выполняете этот метод LineCount? – mybirthname

ответ

1

Попробуйте вычисления самого вместо того, чтобы использовать свойство Lines:

return MainIOControl.Text.Length - MainIOControl.Text.Replace(Environment.NewLine, string.Empty).Length; 

Это один может работать лучше для вашей ситуации:

private int LineCount() 
     { 
      return MainIOControl.Text.Length - MainIOControl.Text.Replace("\n", string.Empty).Length + 1; 
     } 
+0

Кажется, это работает странно. Первая строка возвращает ** 0 **, вторая строка возвращает ** 2 **, третья - ** 4 ** и четвертая - ** 6 **, и она продолжает увеличиваться так же. – 73cn0109y

+0

См. Мое последнее изменение, RichTextBox, похоже, не реализует правильную среду Environment.NewLine, плюс я добавил, чтобы подсчитать стартовую строку. Посмотрите, поможет ли это. – Don

+0

Это решает проблему и устраняет мою проблему. Благодарю. – 73cn0109y

Смежные вопросы