2013-01-07 74 views
0

我有一個很長的字符串,但是當我嘗試將其分配給RichTextBox的,它需要很長的時間,例如:把字符串RichTextBox的

string s = "very long string"; 
RichTextBox obj = new RichTextBox(); 
obj.Text = s; 

是否有另一種方式把字符串更快的方式?

+0

表單上是否包含豐富的文本框?你也可以使用文本框;只需啓用多行屬性,然後將文本從變量中設置爲文本框即可。我剛剛在1秒內發送了5000個字符到一個字段,需要多長時間? – Codexer

+0

爲什麼不是RichTextBox1.Text = s; ? – sajanyamaha

+0

字符串s是多久? – platon

回答

0

首先嚐試找出造成延遲的原因,是否寫入 屏幕或創建添加的文本。 因爲它是關於後者,然後嘗試在兩者之間的stringbuilder創建一個 字符串

+0

它應該是在評論部分我相信:) – Sandy

+0

但我沒有得到添加評論選項的具體問題 –

+0

我認爲你需要更多的聲譽,沒有probs :) – Sandy

0

當然不是你在找什麼,而是在飛行中的猜測。如果您擔心在將長文本(字符串)分配給richtextbox時表單掛起,並且您無法操作任何內容,則可以嘗試在線程中分配文本,而不是繼續使用主表單。示例代碼如下。

private void SetTextButton_Click(object sender, EventArgs e) 
{ 
    string longText = "Very Long Text"; 
    Thread t = new Thread(() => AssignLongText(longText)); 
    t.Start(); 
} 

private void AssignLongText(longText) 
{ 
    Invoke(new Action(() => richTextBox1.AppendText(text))); 
} 

如果我的啤酒超過了在國內肯定會嘗試看看這個帖子再次:)

希望它能幫助。

+0

你可能會遇到交叉線程這個答案的錯誤。您需要爲分配長文本例程創建一個委託,然後檢查文本框的invokerequired屬性,以確保在執行文本插入時位於GUI線程中。 –

+0

只是忽略了十字線的事.......我的愚蠢。我已更新答案以解決您的評論 – Sandy