【问题标题】:RichTextBox - Remove Last Character(s) Without Removing FormattingRichTextBox - 删除最后一个字符而不删除格式
【发布时间】:2014-02-05 23:08:20
【问题描述】:

目标

我正在尝试从我的 RichTextBox 中删除最后一个逗号和空格。

当前结果

这是我的 RichTextBox 的结果。它包含各种不同的类别,这些类别被分成不同的颜色,以便用户阅读。

但是,如您所见:逗号和空格(空格不可见)在电磁阀

之后

尝试解决问题

我使用以下代码来修剪 RichTextBox 中的最后一个逗号和最后一个空格。

If rtbSummary.Text.Substring(rtbSummary.TextLength - 2, 2).Contains(", ") Then
    rtbSummary.Text = rtbSummary.Text.Remove(rtbSummary.TextLength - 2, 2)
End If

请记住,这是有效的。唯一的问题是我丢失了格式:


那么如何在不影响颜色格式的情况下从 RichTextBox 中删除最后一个逗号和空格?

我的 RichTextBox 中出现逗号和空格的原因是我循环对象列表以填充 RichTextbox 的方式。如果我要验证是否有其他项目以放置逗号,我会循环很多东西。我认为仅修剪会比嵌套循环消耗更少的资源。

【问题讨论】:

  • RichTextBox 作为获取内容的两种方式 .Text 和 .RichText。如果您捕获 .richText,您可以查看它以了解如何获取需要删除的字符。
  • @rheitzman 啊,我不知道有 RichText ...谢谢,我一定会调查一下!
  • 我的错误:.Text 和 .Rtf 不是 .Text 和 .RichText。

标签: vb.net winforms colors formatting richtextbox


【解决方案1】:

参考 LarsTech 的建议。

请记住,如果您启用了 Readonly,那么您必须在文本删除期间暂时禁用它。否则它将忽略您的努力 (rtb.SelectedText = String.Empty) 并保持选中文本。

【讨论】:

    【解决方案2】:

    替换 Text 属性会删除现有文本的所有格式。尝试使用选择方法来改变它:

    Dim lastComma As Integer = rtb.Text.LastIndexOf(",")
    If lastComma > -1 Then
      rtb.Select(lastComma, rtb.Text.Length - lastComma)
      rtb.SelectedText = String.Empty
    End If
    

    【讨论】:

    • 瞧,完美。谢谢!
    • 事实证明,如果您替换 .Text 的文本是正确的 RTF,则一切正常。我们将 RTF 存储在 SQL Server 的 varchar(max) 字段中,并通过 .Rtf 插入它,它就可以工作了。在 OP 中,错误是删除了一些 RTF 命令而不是所需的字符。 (我之前弄错了,RichText 属性是.Rtf 而不是.RichText)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多