1

好的,我在 vb.net 2008 中的 MS 默认 Richtextbox 中发现了一种奇怪的错误。如果我们以编程方式在 Richtextbox 中添加一些文本行。右侧有一个缺口。见下图

错误

这是我的代码

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
4

2 回答 2

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

我添加了一个 hackBeginInvoke方法,该方法执行似乎可以解决问题的ScrollToCaret()调用。

于 2012-06-04T14:32:06.713 回答
0

如果你还设置

rtb.Width = 500
rtb.Height = 500

然后它按需要工作。

我同意这是奇怪的行为。VS 2012 RC 也是如此。

于 2012-06-04T19:08:47.980 回答