2010-02-09 66 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 2010-02-12 02:14:14

2

您可以檢查是否粘貼文本更快:

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

編輯:
由於文本框不是文本框後,而是一個RichTextBox,粘貼方法的工作方式不同。你可以把文本在剪貼板粘貼,或使用SelectedText屬性來代替:

textbox1.SelectedText = ";"; 
+0

謝謝我會試試這個。 – 2010-02-09 12:51:01

+0

謝謝你的回答,但是我認爲C#和vb.net之間存在一些差異,這意味着它完全無法工作 – 2010-02-10 20:42:53

+0

@Jonathan:根本不應該有任何實際的差異。只需刪除行尾的分號,即VB代碼。 – Guffa 2010-02-10 21:05:21

0

串聯長字符串是痛苦的緩慢。使用richTextBox而不是TextBox會使用戶界面對於大字符串快得多,但對編程式文本更改沒有多大幫助。

這是一種可以加速文本框中大字符串變化的方式,但不幸的是這種方式很麻煩。

  1. 而是讀取文件中作爲一個單一的字符串,它讀成字符串數組:

    ss = System.IO.File.ReadAllLines(filename) 
    
  2. 只分配字符串三倍左右高度的文本框的文本框,連接你在第一步中讀取的行並添加一個crlf。

  3. 根據需要手動進行滾動,添加或刪除「textbox buffer」字符串。

  4. 反映用戶在文本框緩衝區和原始行(ss)中所做的更改。

這非常麻煩,但它會加快8 meg文件/字符串的文本框處理速度,例如,幾百倍。

+0

將文本粘貼到未打開的文本框中。 – 2010-02-10 17:15:11