仅使 richtextbox 单行
Make richtextbox single line only
是否可以让一个richtextbox只能包含一行?我希望它具有 wraptext 功能,但我不能在它将生成的文件中包含多行。
您可以将其 AcceptsReturn 属性设置为 false,因为它不会让文本 return.
只允许一行
如果出于某种原因您的属性 window 没有 AcceptsReturn 属性,您可以在事件 KeyDown
下添加 if e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True
(如 Jimi).
简单的先想想,我们怎么到下一行呢?通过按 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
希望这对您有所帮助:)
是否可以让一个richtextbox只能包含一行?我希望它具有 wraptext 功能,但我不能在它将生成的文件中包含多行。
您可以将其 AcceptsReturn 属性设置为 false,因为它不会让文本 return.
只允许一行如果出于某种原因您的属性 window 没有 AcceptsReturn 属性,您可以在事件 KeyDown
下添加 if e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True
(如 Jimi).
简单的先想想,我们怎么到下一行呢?通过按 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
希望这对您有所帮助:)