【发布时间】:2014-11-09 00:50:26
【问题描述】:
我以编程方式向表单添加了 RichTextBox 控件,但在尝试格式化时似乎遇到了很多问题。请注意,我通过 GDI 手动添加了控件,但也遇到了同样的问题。
基本上发生的事情是我的控件已绘制但使用与表单相同的初始背景颜色(即使我手动指定了不同的颜色)。该控件在加载表单时也显示为空,但是,我可以手动单击鼠标以获取文本“应该”出现的光标。
如果我在控件内单击并拖动,我的所有文本都会以我定义的所有格式显示。我不知道是什么原因造成的,但我试图刷新表单、刷新控件、更新控件但没有任何效果。我也尝试过使用.Text、.SelectedText 和.AppendText,以及.SelectionColor 和.SelectionBackColor。
我的代码是这样的:
Dim rtb As RichTextBox = New RichTextBox
rtb.Location = New Point(94, 229)
rtb.Size = New Size(608, 46)
rtb.BackColor = Color.FromArgb(38, 38, 38)
rtb.ForeColor = Color.LightGray
rtb.AppendText(_ticket.ticket_lastcomment)
Me.Controls.Add(rtb)
然而,它创建了一个新的 RichTextBox,它与表单 (Color.Control) 的颜色相同并且为空。在我手动突出显示文本之前,不会对控件应用任何格式。
我从来没有遇到过这种情况。
更新
经过各种反复试验和移动代码,我发现阻止绘制RichTextBox的代码是这样的:
Me.animator = New FormAnimator(Me, FormAnimator.AnimationMethod.Centre, FormAnimator.AnimationDirection.Right, 200)
我将 FormAnimator 应用到表单以使其在打开时产生效果。删除这段代码可以让 RichTextBox 正确绘制.....奇怪。
【问题讨论】:
-
当您在不触摸控件本身的情况下移动窗口时,控件是否会更改为正确的外观?如果是这样,你肯定有重绘问题。您也可以在文本框上尝试 .Invalidate()。
-
@WeSt 不,它没有。它仅在我手动突出显示文本时更新。此外,文本框上的
.Invalidate似乎也不起作用。
标签: vb.net richtextbox