2012-06-04 42 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一樣。