【问题标题】:RightToLeft RichTextBox with pre-loaded text带有预加载文本的 RightToLeft RichTextBox
【发布时间】:2012-06-04 13:48:36
【问题描述】:

好的,我在 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

【问题讨论】:

    标签: vb.net richtextbox


    【解决方案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
    

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

    【讨论】:

    • 谢谢,但这并不是一直有效。我有一个非常复杂的代码,在该代码中,我从文件中加载 rtf,它在那里不起作用。
    • @user934820 看起来像是有问题的滚动条问题。我的示例有效,但如果我更改f.Height = 250,则不会。如果我用鼠标调整表单大小,它会自行修复。
    • 是的,这是真的,我也意识到这一点,还有一件事,如果我们只添加一行,这个错误将永远不会出现。因此,如果此错误有任何适当的解决方案,否则我用于阅读文本的应用程序将毫无用处。
    • @user934820 用新的技巧更新了答案。
    【解决方案2】:

    如果你也设置了

    rtb.Width = 500
    rtb.Height = 500
    

    然后它就可以正常工作了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多