VB如何限制RichTextBox的行号

时间:2015-06-25 12:02:05

标签: vb.net richtextbox

我在使用RichTextBox时遇到了一些问题。我必须限制RTB的大小与所需的字符数相关(高度为10表示宽度为10)。我试图使用maxLength属性限制行数。我的意思是我可以限制行长度例如10如果我将最大长度定义为100,则只能有10行。没有输入键,一切都可以。但是当我按下回车键时,它不计算当前行的其余部分。如果我在一行的第6个字符后按Enter键,它会跳到下一行。并将前一行计为6.因此,向下的行会变得更长。提前致谢...我的代码如下。

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
    'Here im trying to count character number of each line

    Dim count As Integer = 0
    For Each s As String In Me.RichTextBox1.Lines
        count = count + 1
        MsgBox(count)

        Dim nextLineText As String = s

        If e.KeyCode = Keys.Enter Then
            If count < (TakeFromCombo(ComboBox1)) Then
                RichTextBox1.MaxLength = RichTextBox1.MaxLength - (TakeFromCombo(ComboBox1) - nextLineText.Length)
            End If
        End If

        'I tried to disable enter key at last line
        If count = TakeFromCombo(ComboBox1) Then
            If e.KeyCode = Keys.Enter Then
                e.Handled = True
            End If
        End If
    Next

End Sub

1 个答案:

答案 0 :(得分:0)

这个怎么样? (其中rtb1是您的RichTextBox):

Private Sub rtb1_KeyDown(sender As Object, e As KeyEventArgs) Handles rtb1.KeyDown
    If rtb1.Text.Length > 0 Then
        If rtb1.Lines.Count = 11 Then
            e.SuppressKeyPress = True
        End If
        If rtb1.Lines(rtb1.GetLineFromCharIndex(rtb1.GetFirstCharIndexOfCurrentLine)).Length > 9 And e.KeyCode <> Keys.Return Then
            e.SuppressKeyPress = True
        End If
    End If
End Sub

操纵这种情况的工具有点粗糙。 GetFirstCharIndexOfCurrentLine返回整个RTB文本字符串中的字符索引。 GetLineFromCharIndex(i)获取包含i的文本行的索引。 Lines()返回所有行的数组(它只是RTB的文本,在回车符上拆分,Lines(i)与任何数组一样,返回该索引处的数组成员(使用两个先前描述的RTB方法)。