区域: Silverlight中的文本框
问题: 我需要知道当前编辑的“行号”。
我试过了: 作为一种解决方法,我尝试使用textBox.Split(“\ r \ n”)进行拆分,并使用类似的性能计算Regex上的匹配项。在前2000行中的表现是可以接受的,但随后它会变慢。
为什么: 我有一个Textbox和一个Listbox并排。列表框中的项目索引对应于文本框中的行号,而(ListboxItem的)内容是文本框中相应行的“已处理”版本。
替代: 比我的黑客更具性能友好的策略。
答案 0 :(得分:2)
我认为,您实际上不需要使用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++;
这样,你就可以找到行号,而无需在内存中创建大量的对象......
答案 1 :(得分:0)
这是解决方案。随意改进代码。
演示 - &gt; http://briggs69.blogspot.com/2011/08/solution-maxlines-property-in.html