如何从richtextbox中仅删除Strikeout的文本?

时间:2014-06-25 08:40:40

标签: c#

你好我有一个富文本框的问题,我试图只删除Strikeout的单词,但是如果我有一个单词出现的是普通字体,那么这个单词也被删除了。我怎样才能删除Strikeout中的单词?

这是我的代码:

        text = richTextBox2.Text;
        string[] destLine = richTextBox2.Text.Split(WordSeparaterss);
        foreach (string str in destLine)
        {
            int startIndex = 0;
            while (startIndex != -1)
            {
                startIndex = richTextBox2.Find(str, startIndex + 1,
                                richTextBox2.Text.Length,
                                RichTextBoxFinds.WholeWord);
                if (startIndex != -1)
                {
                    richTextBox2.Select(startIndex, str.Length);

                    if (richTextBox2.SelectionFont.Strikeout)
                    {
                        text = text.Replace(str, string.Empty);
                    }
                }
            }
        }

这是文本的例子,我在"之间删除文本。 * "

***Deutschlektionen erlauben vertiefende Einblicke für den Aufbau der deutschen Sprache. Satzbau, Präpositionen, Pronomen und viele andere Themen werden kompakt präsentiert und mit einem berühmten Zitat veranschaulicht. Deutschkurs - Grammatik***
Gramatik und viele zum.

这就是我从我的代码中获得的:

ane wer Gramatik zum.

我只想得到:Gramatik und viele zum.

1 个答案:

答案 0 :(得分:1)

此方法检查当前文本的长度。然后从结束开始逐个字符检查。如果它的样式是Strikeout则将其删除。请注意,计数从结束开始。这是因为删除一个字母或索引后减少。如果从结束开始计算,索引的更改将仅影响已调查的文本。

this.richTextBox1.SelectAll();
int textLength = this.richTextBox1.SelectedText.Length;
for (int i = textLength; i >= 0; --i)
{
    this.richTextBox1.Select(i, 1);
    if (this.richTextBox1.SelectionFont.Style == FontStyle.Strikeout)
    {
        this.richTextBox1.SelectedText = string.Empty;
    }
}