2011-10-31 93 views
0

內結束文本框的我已經嘗試了所有的答案在堆棧溢出建議讓我的滾動文字正在更新移至底部,但我有一種感覺,它不工作,因爲它是一個線程中。我的代碼如下...TextBox滾動條。滾動到主題

foreach(HtmlAgilityPack.HtmlNode paginationUser in paginationUsers) { 
        String userUrl = paginationUser.GetAttributeValue("id",""); 
        this.Invoke((MethodInvoker)delegate { 
         txtLog.AppendText("...... Added " + userUrl + Environment.NewLine); 
         txtLog.Select(txtLog.Text.Length, 0); 
         txtLog.ScrollToCaret(); 

        }); 
       } 

這是導致代碼不工作的線程嗎?什麼是更好的解決方案?

+0

什麼是SA?我們需要更多細節。 –

+0

對不起,SA代表堆棧溢出;) –

+1

你指的是什麼答案? –

回答

0

嘗試添加以下代碼:

TextBox.SelectionStart = txtLogEntries.Text.Length; 
    TextBox.ScrollToCaret(); 

在onTextChanged文本框的事件。

0

我覺得用這個代碼是更好:

TextBox.AppendText("your text") 

它會自動滾動到新追加的文本&的結束自動滾動動畫看起來更平滑相比TextBox.ScrollToCaret()方法

你可以把這個代碼在框TextChanged事件的TextBox

0

我有WPF同樣的問題,使用一個線程寫入文本。它工作正常,直到我添加ScrollToEnd。

我沒有辦法,只是一些言論。

您沒有鎖定控件。如果你從胎面中填充它,你應該。 如果我使用Invoke,它確實有效(但UI變得無響應)。我使用BeginInvoke,這是更順暢,但如果我使用ScrollToEnd它完全鎖定。

這似乎是某種觸發問題,一個事件導致其他的。

嘗試餵養文字慢慢看看會發生什麼,工作線程可能會充斥文本框,給它一個很艱難的時期,不允許主線程做它的事。