2011-10-31 92 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它完全锁定。

这似乎是某种触发问题,一个事件导致其他的。

尝试喂养文字慢慢看看会发生什么,工作线程可能会充斥文本框,给它一个很艰难的时期,不允许主线程做它的事。