【发布时间】:2019-10-10 20:43:55
【问题描述】:
我的问题是在 .NET 框架中使用 C# 创建一个包含 富文本框 (RTB) 控件的简单表单应用程序。
简而言之,我遇到的问题是,当尝试清除 RTB 的内容 (.Text) 时,滚动条并没有消失。我想知道我使用 RTB 的方式是否存在任何固有问题。很抱歉,该网站不允许我发布图片。所以如果对“不会消失”是什么意思有误解,请追问!
首先,我使用以下代码 sn-p 将数据写入框:
// append the new message
this.rtb_receive_0.Text += message;
this.rtb_receive_0.SelectionStart = this.rtb_receive_0.Text.Length;
this.rtb_receive_0.ScrollToCaret();
稍后,我使用以下代码清除 RTB 内容(RTB.Text):
this.rtb_receive_0.Text = String.Empty;
this.rtb_receive_0.Refresh();
在上面的代码中,我尝试使用“刷新”方法来解决我的问题。然而,它似乎并没有完成这项工作。
当我清除 RTB 内容时,滚动条并没有消失……我注意到,如果我抓住另一个窗口并将其拖到应用程序的顶部,冻结的滚动条就会消失。另外,我可以最小化应用程序,然后再次最大化它,该栏就会消失。不过,首先必须有一种方法来防止这种冻结的滚动条发生。
根据答案,这是阻止酒吧冻结的修复方法:
this.rtb_receive_0.Text = String.Empty;
this.rtb_receive_0.Clear();
this.rtb_receive_0.ScrollBars = RichTextBoxScrollBars.None;
this.rtb_receive_0.ScrollBars = RichTextBoxScrollBars.Vertical;
this.rtb_receive_0.Refresh();
【问题讨论】:
-
顺便问一下,您使用的是什么版本的 .NET?我刚刚尝试创建一个示例应用程序并设置
MyRTB.Lines = myStringArray,它添加了一个滚动条。然后在按钮单击事件中我分配MyRTB.Lines = null并正确清除。我还尝试设置.Text而不是Lines,它的行为也正确。 -
我的目标框架是“.NET Framework 4 Client Profile”。我现在注意到这与目标框架下拉列表中的“.NET Framework 4”是分开的。
标签: c# .net winforms richtextbox