2012-06-04 92 views
1

好的,我在vb.net 2008的MS默认Richtextbox中发现了一种奇怪的错误类型。如果我们在Richtextbox programmaticlly中添加一些文本行。有一个从右侧的节奏。见下文RightToLeft带预加载文本的RichTextBox

ٰerror

这里的形象是我的代码

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim f As New Form 
    Dim rtb As New RichTextBox 
    f.Width = 500 
    f.Height = 500 
    rtb.RightToLeft = Windows.Forms.RightToLeft.Yes 
    For i = 1 To 20 
     rtb.AppendText("بسم اللہ الرحمن الرحیم" & vbNewLine) 
    Next 
    rtb.Dock = DockStyle.Fill 
    f.Controls.Add(rtb) 
    f.Show() 
End Sub 

回答

1

我无法解释它,但尝试改变你的代码的顺序,使RichTextBox控件添加到窗体之前你附加文字。这为我工作:

Private Sub btn1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn1.Click 
    Dim f As New Form 
    f.Width = 500 
    f.Height = 500 

    Dim rtb As New RichTextBox 
    rtb.Name = "rtb" 
    rtb.Dock = DockStyle.Fill 
    rtb.RightToLeft = RightToLeft.Yes 

    f.Controls.Add(rtb) 
    For i = 1 To 25 
    rtb.AppendText("بسم اللہ الرحمن الرحیم" & vbNewLine) 
    Next 
    f.Show() 

    f.BeginInvoke(New Action(Of RichTextBox)(AddressOf RunFix), rtb) 
End Sub 

Sub RunFix(ByVal rtfControl As RichTextBox) 
    rtfControl.Select(0, 0) 
    rtfControl.ScrollToCaret() 
End Sub 

我加入一个黑客BeginInvoke方法执行ScrollToCaret()调用,它似乎来解决这个问题。

+0

谢谢,但这并没有一直工作。我有一个非常复杂的代码,在那个代码中,我从文件加载rtf,它不会在那里工作。 – user934820

+0

@ user934820看起来像一个越野车滚动条问题。我的例子的作品,但如果我改变'f.Height = 250',那么它不会。如果我用鼠标调整窗体大小,它会自行修复。 – LarsTech

+0

是的它是真实的,我也意识到,而且更多的是,如果我们只添加一行,这个错误将永远不会出现。所以,如果有任何适当的解决方案,这个错误,否则我的应用程序是用于阅读文本是没用的。 – user934820

0

如果您还设置

rtb.Width = 500 
rtb.Height = 500 

然后它根据需要。

我同意这是奇怪的行为。它与VS 2012 RC一样。