2

私のプロジェクトでは、正当化されたテキストの整列とHTMLタグのレンダリングを特徴とするリッチテキストボックスを使用したいと思います。私はウェブ上のすべての例を調べて試しました。しかし、私は私の心のように見つけることができませんでした。AdvRichTextBoxに飽きましたが、HTMLをサポートしていません。私はそれにいくつかの新しい機能を書きたいです。私は以下のようなメソッドを書こうとしました:

private void htmlRTB(AdvRichTextBox rtb)
{
    foreach (var line in rtb.Lines)
    {
        int boldStart = rtb.Find("<b>");
        int boldEnd = rtb.Find("</b>");
        rtb.Select(boldStart, (boldEnd - boldStart));
        rtb.SelectionFont = new Font("Arial", 9, FontStyle.Bold);
        line.Replace("<b>", "").Replace("</b>", "");

        int italicStart = rtb.Find("<i>");
        int italicEnd = rtb.Find("</i>");
        rtb.Select(italicStart, (italicEnd - italicStart));
        rtb.SelectionFont = new Font("Arial", 9, FontStyle.Italic);
        line.Replace("<i>", "").Replace("</i>", "");
    }
}

しかし、それはめちゃくちゃでした。HTMLタグを初めて使用したときは、太字または斜体で表示されます。ただし、replaceメソッドは機能しません。また、HTMLタグが2回以上使用された場合、それらは太字または斜体で表示されず、replaceメソッドは機能しません。これはスクリーンショット画像です: ここに画像の説明を入力してください この問題を解決する方法を教えてください。敬具。

4

1 に答える 1

1

RTB自体ではなく、引き出した行のタグを置き換えているだけのようです。RTB テキストで置換を実行する必要があります。タグの int の場所が既にあるので、それほど難しくはありません。それをそのまま使用できます。

また、for ループは、すべてのテキストが 1 行と見なされるため、思ったように機能しません。そのため、最初のテキストのみを太字/強調表示しました。仕事から帰ったら、例を書いてみます。

于 2012-11-29T20:13:33.477 に答える