RichTextBox - 删除最后一个字符而不删除格式

时间:2014-01-16 20:19:07

标签: vb.net winforms colors formatting richtextbox

目标

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

当前结果

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

RichTextbox With Formatting

但是,正如您所看到的:逗号和空格(空间不可见)位于电磁阀之后


尝试解决问题

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

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

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

RichTextBox Lost Formatting


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

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

2 个答案:

答案 0 :(得分:3)

替换Text属性会删除现有文本的所有格式。尝试使用Selection方法进行更改:

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

答案 1 :(得分:0)

参考LarsTech的建议。

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