2010-02-09 3 views
2

В настоящее время у меня есть код:Вставить символ в начале текущей строки (vb.net)

textbox1.text = textbox1.text.insert(textbox1.getfirstcharIndexFromCurrentLine(),";") 

Но это означает, что он должен перезагрузить все текстовое поле, которое с большими файлами, что заметно медленно.

Каковы альтернативы?

ответ

2
Dim currcaretpos = TextBox1.SelectionStart 
Dim currsellength = TextBox1.SelectionLength 
TextBox1.SelectionStart = TextBox1.GetFirstCharIndexOfCurrentLine 
TextBox1.SelectionLength = 0 
TextBox1.SelectedText = ";" 
TextBox1.SelectionStart = currcaretpos + 1 
TextBox1.SelectionLength = currsellength 
+0

+1 - используется для вставки «метки времени» в текстовое поле (устанавливается в многострочный). – JeffO

2

Вы можете проверить, если вставить текст быстрее:

textbox1.SelectionStart = textbox1.GetFirstCharIndexOfCurrentLine(); 
textbox1.SelectionLength = 0; 
textbox1.Paste(";"); 

Edit:
Как текстовое поле не текстовое поле, в конце концов, но RichTextBox, метод Paste работает по-другому. Вы можете поместить текст в буфер обмена и вставить его, или использовать свойство SelectedText вместо:

textbox1.SelectedText = ";"; 
+0

Спасибо, я попробую это. –

+0

Спасибо, ответ немного помог, но я думаю, что есть несколько различий между C# и vb.net, которые означают, что он не работает полностью –

+0

@Jonathan: Не должно быть никаких практических различий вообще. Просто удалите точки с запятой в конце строк, в коде VB. – Guffa

0

Конкатенация длинные строки крайне медленно. Использование richTextBox вместо TextBox сделает пользовательский интерфейс намного более быстрым для больших строк, но это мало помогает изменениям в программном тексте.

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

  1. Вместо чтения файла в виде одной строки, читать его в виде массива строк:

    ss = System.IO.File.ReadAllLines(filename) 
    
  2. только присвоить строку примерно в три раза больше высоты в текстовое поле в текстовое поле , объединяя строки, которые вы читаете на первом шаге, и добавляете crlf.

  3. Вручную выполните прокрутку, добавив или удалив из строки «буфер текстового поля» при необходимости.

  4. Отражать изменения, внесенные пользователем в буфер текстового поля и исходные строки (ss).

Это довольно громоздкое, но это ускорит обработку текста коробочной 8 мек файл/строку, например, фактор нескольких сот.

+0

текст вставляется в текстовое поле, которое не открывается. –

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