Информация о строке / номер из текстового поля в Silverlight - PullRequest
3 голосов
/ 18 декабря 2008

Площадь: Текстовое поле в Silverlight

Вопрос: Мне нужно знать, какой "номер строки" в данный момент редактируется.

Я пробовал: В качестве обходного пути я попытался разделить текст с помощью textBox.Split ("\ r") и подсчитать совпадения в Regex с аналогичной производительностью. Производительность в течение первых 2000 строк приемлема, но затем она замедляется.

Почему: У меня есть текстовое поле и список рядом друг с другом. Индекс элемента в списке соответствует номеру строки в текстовом поле, а содержимое (элемента ListboxItem) является «обработанной» версией соответствующей строки в текстовом поле.

Альтернатива: Более эффективная стратегия, чем мои хаки.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2008

Как я понимаю, вам не нужно использовать string.Split или Regex. Просто переберите строку и сосчитайте '\r' с до каретки.

var s = ...the string...
var r = 0;
var c = ...caret position...

for (var i = 0; i < c; i++)
  if (s[i] == '\r')
    r++;

Таким образом, вы найдете номер строки, не создавая много-много объектов в памяти ...

0 голосов
/ 18 августа 2011

Вот решение. Не стесняйтесь улучшать код.

Демо -> http://briggs69.blogspot.com/2011/08/solution-maxlines-property-in.html

Источник -> http://www.codeproject.com/KB/edit/XTextBox.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...