【发布时间】:2018-04-12 23:52:14
【问题描述】:
是否可以制作一个只能包含一行的富文本框?我希望它具有 wraptext 功能,但我不能在它将生成的文件中包含多行。
【问题讨论】:
-
是否将 RichTextBox.Multiline Property 设置为 False 由于某种原因不起作用?
标签: vb.net winforms richtextbox
是否可以制作一个只能包含一行的富文本框?我希望它具有 wraptext 功能,但我不能在它将生成的文件中包含多行。
【问题讨论】:
标签: vb.net winforms richtextbox
您可以将其 AcceptsReturn 属性设置为 false ,这应该只允许一行,因为它不会让文本返回。
如果由于某种原因您的属性窗口没有 AcceptsReturn 属性,您可以在事件KeyDown 下添加if e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True(如Jimi 所建议的那样)。
【讨论】:
if e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True。或者你可以修改RichTextBox Style Rich Edit Control Styles (ES_WANTRETURN) 和AcceptsReturn = False 一样的效果。或者使用这些选项之一创建扩展方法。
先想想,我们如何进入下一行?通过按Return 或Enter。所以,在RichTextbox 的KeyPress 事件中,您可以简单地使用:
If e.KeyChar = Keys.Return Then
e.Handled = True
End if
现在这有一个主要缺点,那就是:如果用户复制粘贴多行文本到 richtextbox 怎么办?
要解决此问题,您只需在 TextChanged 事件中应用以下代码:
Private Sub Rtb_TextChanged()
Dim lcount as Integer = rtb.Lines.Count
Dim i As Integer
If lcount > 1 Then
For i = 2 to lcount - 1
Dim index As Integer = rtb.GetFirstCharIndexFromLine(i)
Dim count As Integer = rtb.GetFirstCharIndexFromLine(i + 1) - start_index
rtb.Text = rtb.Text.Remove(index, count)
Next
End if
End Sub
希望这会有所帮助:)
【讨论】: