RichTextBox水平滚动不起作用

9
我有一个只读的单行 RichTextBox,不支持自动换行,并且我通过编程添加了一行非常长的文本。然而,即使我将 ScrollBars 设置为 ForcedHorizontal,水平滚动条也不会出现。我该怎么解决这个问题?如果使用键盘上的箭头键可以浏览整行,但这只会使情况变得更糟。

1
当我使用 RichTextBox 并给它一个长字符串的文本,且设置 WordWrap=false 时,我会自动看到水平滚动条。使用 ForcedHorizontal,你是否会在没有文本时看到灰色的滚动条?请检查一下,文本框的底部是否被切掉了? - SomeWritesReserved
不,显然 RichTextBox 只有在多行模式下才能使用滚动条。 - Qsiris
5个回答

10

尝试使用以下方法解决问题:

    Multiline = True
    WordWrap = False

修改这些属性可以使文本框支持多行输入,并允许水平滚动。

仅供参考,即使您的行全是空格,这些也不起作用。假设您有1464个字符,而您的RichTextBox应该显示其中的一部分,比如100个字符。如果该行全是空格,则水平滚动条即使使用ForcedHorinzontal也不会显示。尝试添加在行末添加一个字符,然后神奇地滚动条就会出现。我进行了三次测试,这确实是真的。我甚至尝试在开头有5个字符,然后全部为空格直到结尾,但没有滚动条,但是只要我在结尾处键入一个字符,滚动条就会出现。 - Marc Roussel
1
如果是这样,那么这一定是默认 RichTextBox 的一个 bug。如果你想让它只在行末工作,继承默认的 RichTextBox 并自己修复它。 - TVC
在我们的情况下这不是问题,因为我们不需要滚动条。我写这句话是为了提醒那些可能不理解为什么他们还没有滚动条的人。希望这能帮助其他人。 - Marc Roussel

4

我可以复现这个问题

MultiLine = false

如果我将此属性更改为True,则滚动条将如预期般出现。

这个能用,但是我的文本只有一行,为什么一定要多行呢? - Qsiris
1
非多行模式下没有水平滚动条...这很奇怪。 - Renatas M.
1
@Reniuz,是的,这是一个谜。在这里没有太多解释http://msdn.microsoft.com/en-us/library/aa983606(v=VS.71).aspx。 - Steve

0
你需要将Multiline属性设置为true。 请参考MSDN中的以下文本:

要在RichTextBox控件中显示滚动条,请将Multiline属性设置为true。如果将Multiline属性设置为false,则不会显示任何类型的滚动条,包括水平滚动条。

将ScrollBars属性设置为RichTextBoxScrollBars枚举的适当值。


0
这对我有用:
WordWrap = false;
ScrollBars = RichTextBoxScrollBars.Both;

0

我遇到了垂直滚动条的问题。 如果Rich文本框位于任何控件内,例如TabPage等,则在这种情况下,您需要将dock == fill设置为RickTextbox。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接