如何获取多行文本框每行的长度并检查多于或少于VB.NET中的特定值
How to get Length of each line of multiline TextBox and check more or less than specific value in VB .NET
我想获取多行文本框中每一行的长度并显示在另一个文本框中,例如 3/12
并检查每行是否超过 36 个字符,然后指示行长度的文本框的前景色应为红色。
我为此写了一个鳕鱼,但效果不佳。
我怎样才能做到这一点?谢谢大家
我的鳕鱼是:
Private Sub Texttb_TextChanged(sender As Object, e As EventArgs) Handles Texttb.TextChanged
TextBox2.Clear()
For Each lin As String In Texttb.Lines
TextBox2.AppendText(lin.Length & "/")
If lin.Length > 38 Then
TextBox2.ForeColor = Color.Red
ElseIf lin.Length < 38 Then
TextBox2.ForeColor = Color.Black
End If
Next
如果您只关心任何行是否太长,那么只需使用 Any
:
TextBox2.ForeColor = If(TextBox1.Lines.Any(Function(line) line.Length > MAX_LINE_LENGTH),
Color.Red,
Color.Black)
编辑:
根据我设法梳理出的完整问题描述,这可能是要走的路:
Const MAX_LINE_LENGTH = 38
Dim lineLengths = TextBox1.Lines.Select(Function(line) line.Length).ToArray()
With TextBox2
.Text = String.Join("/", lineLengths)
.ForeColor = If(lineLengths.Any(Function(n) n > MAX_LINE_LENGTH),
Color.Red,
SystemColors.ControlText)
End With
我想获取多行文本框中每一行的长度并显示在另一个文本框中,例如 3/12 并检查每行是否超过 36 个字符,然后指示行长度的文本框的前景色应为红色。 我为此写了一个鳕鱼,但效果不佳。 我怎样才能做到这一点?谢谢大家
我的鳕鱼是:
Private Sub Texttb_TextChanged(sender As Object, e As EventArgs) Handles Texttb.TextChanged
TextBox2.Clear()
For Each lin As String In Texttb.Lines
TextBox2.AppendText(lin.Length & "/")
If lin.Length > 38 Then
TextBox2.ForeColor = Color.Red
ElseIf lin.Length < 38 Then
TextBox2.ForeColor = Color.Black
End If
Next
如果您只关心任何行是否太长,那么只需使用 Any
:
TextBox2.ForeColor = If(TextBox1.Lines.Any(Function(line) line.Length > MAX_LINE_LENGTH),
Color.Red,
Color.Black)
编辑:
根据我设法梳理出的完整问题描述,这可能是要走的路:
Const MAX_LINE_LENGTH = 38
Dim lineLengths = TextBox1.Lines.Select(Function(line) line.Length).ToArray()
With TextBox2
.Text = String.Join("/", lineLengths)
.ForeColor = If(lineLengths.Any(Function(n) n > MAX_LINE_LENGTH),
Color.Red,
SystemColors.ControlText)
End With