【问题标题】:VB.NET RTB line counter?VB.NET RTB 行计数器?
【发布时间】:2016-01-29 02:13:40
【问题描述】:

我正在尝试为富文本框控件制作一个简单的行计数器。现在,我在框的左侧有一个标签,使用以下代码:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Label2.Text = RichTextBox1.Lines.Count()

End Sub

这很好用。与按钮相同,它只会更新数字。我遇到的问题是使用此代码:

    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged

    Label2.Text = Label2.Text + RichTextBox1.Lines.Count() + Environment.NewLine

我明白了:

Microsoft.VisualBasic.dll 中出现“System.InvalidCastException”类型的未处理异常

附加信息:从字符串“转换”

" 输入 'Double' 无效。

有什么办法吗?谢谢

【问题讨论】:

  • RichTextBox1.Lines.Count() 返回一个数字,+ 用于加法,因此您尝试添加“某物”+ 42 + 。使用“&”进行字符串连接,.ToString 使用 Count() 打开 Option Strict - 第一个块也需要
  • 可能还值得注意的是,这种设计方式,每次你输入一个字母时,标签都会附加一个带有行数的新行。我不确定这是否是预期的结果(对我来说似乎有点奇怪),但如果这不是你想要的,你可以尝试先清除标签的文本。在将文本分配给行数之前,只需添加 Label2.Text = "" 即可清除文本。
  • 谢谢!有没有办法检查富文本框中的行数,并将标签设置为那么多换行符?例如,每次更改时,检查行,而不是添加新行(因为您可以退格一行),而是检查行并为其设置标签?我认为您可以为行数设置一个变量,然后将每个数字拆分并为每个数字创建一个新行。有没有更简单的方法?
  • Label2.Text = RichTextBox1.Lines.Count.ToString()

标签: vb.net visual-studio


【解决方案1】:

VB.NET 中连接字符串的运算符是& 字符,而不是+ 字符。 RichTextBox1.Lines.Count() 返回一个整数类型的值;为了返回该值的字符串表示,您应该调用ToString() 方法。

尝试改用这个:

Label2.Text &= RichTextBox1.Lines.Count.ToString() & Environment.NewLine

这将在每次执行代码时将行计数值附加到标签的末尾。但是,如果您正在制作一个只报告 RichTextBox 中的行数的行计数器,我建议使用以下内容:

Label2.Text = RichTextBox1.Lines.Count.ToString()

【讨论】:

    【解决方案2】:

    你可以试试吗,

    Label2.Text = Label2.Text + System.Convert.ToString(RichTextBox1.Lines.Count()) + Environment.NewLine

    【讨论】:

    • 为什么不直接做.Count().ToString()?此外,在连接字符串时实际使用连接运算符 (&) 比使用 + 更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多