如何避免我的富文本框,滚动条,冻结
本文关键字:滚动条 冻结 文本 何避免 我的 | 更新日期: 2023-09-27 18:06:59
我的问题是在。net框架中使用c#创建一个包含富文本框 (RTB)控件的简单表单应用程序。
简要地说,我遇到的问题是,当试图清除RTB的内容(. text)时,滚动条不会消失。我想知道我使用RTB的方式是否有任何固有的错误。我很抱歉,但是这个网站将不允许我发布图像。所以,如果对"不走"的意思有误解,请问!
因此,首先,我使用以下代码片段向框中写入数据:// 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();
在上面的代码中,我有尝试用"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();
您是否尝试过简单地通过编程设置RTB上的滚动条属性?
myRichTextBox.ScrollBars = RichTextBoxScrollBars.None;
编辑:我想我误解了你的需求。四处搜索,我在另一个论坛上发现了类似的帖子:http://www.vbforums.com/showthread.php?793671-RESOLVED-RichTextBox-Visual-Bug
该用户正在根据列表视图中的选择设置RTB的值。当设置了一个新值并且不需要滚动条时,它不会重新绘制并且仍然显示滚动条。
似乎添加myRichTextBox.Clear(); myRichTextBox.Refresh();
应该有所帮助。在本例中,用户还通过编程方式设置ScrollBars
属性。
另外,你是否能够确定有多少行文本可以适合在RichTextBox之前滚动条是需要的?我想这可能会根据机器上的系统设置而有所不同,但您可能只是能够以编程方式检查myrtb.Scrollbars = (myrtb.Lines.Length > X) ? Vertical : None;
(请原谅psuedo代码语法)
对我有帮助的只是两次调用refresh()
方法。虽然很丑,但是效果很好。
嗯,经过更彻底的测试,这个丑陋的修复被证明并不是一个真正的修复。它有帮助,但仍有一些小故障。refresh ();update ();
我也有同样的问题。我通过调用Invalidate()方法解决了这个问题,该方法强制控件重新绘制。
Me.RichTextBox.Clear()
'Call Invalidate in order to force the RichTextBox to repaint. I do this so that any
'Visible Scroll bars are removed after clearing the Text
Me.RichTextBox.Invalidate()
我尝试了刷新();Update ();Invalidate();,但对我不起作用。
我用下面三行代码解决了这个问题:
RitchTextBox.Clear(); //Clearing text in RichTextBox
RitchTextBox.ScrollBars = RichTextBoxScrollBars.None; //Remove scroll
RitchTextBox.ScrollBars = RichTextBoxScrollBars.Vertical; //Again add scroll
试试上面三行。