2

XMLテキストを編集するためのRichTextBoxがあります。RichTextBox内のXMLタグ名に色を付ける方法
が必要です。タグ名を赤または緑の色にします。
それを行う方法はありますか?

4

6 に答える 6

2

このページを使用して、目的の正規表現が何であるかを調べます。これを取得したら、次の方法のようなものを使用して更新できますRichTextBox

public static void HighlightSyntax(RichTextBox richTextBox, Regex yourRegex, Color someColor)
{
    richTextBox.BeginUpdate();
    int selPos = richTextBox.SelectionStart;
    richTextBox.SelectAll();
    richTextBox.SelectionColor = normTextColor;
    richTextBox.Select(selPos, 0);

    // For each match from the regex, highlight the word.
    foreach (Match keyWordMatch in yourRegex.Matches(richTextBox.Text))
    {
        richTextBox.Select(keyWordMatch.Index, keyWordMatch.Length);
        richTextBox.SelectionColor = someColor;
        richTextBox.Select(selPos, 0);
        richTextBox.SelectionColor = normTextColor;
    }
    richTextBox.EndUpdate();
}

タイマーを採用して、設定した時間後にこれを自動的に更新することもできます。

これが役立つことを願っています。

ノート。大きなテキストファイルの場合、このようなアプローチは遅くなります! この場合、以下の回答の 1 つに記載されているように、Sinctilla.NET を完全な構文ハイライターとして採用します...

于 2012-10-22T08:42:24.870 に答える
1

たとえば、構文の色付けの可能なアプローチを説明または提案する記事があります。 WinForms アプリケーションで構文の強調表示を実装する方法

最善かつ最も簡単な方法は、Scintilla.NETを使用してそれを処理することだと思います。そうすれば、車輪を再発明するのではなく、自分にとって本当に重要なことに集中できます:)

于 2012-10-22T08:36:54.467 に答える
0

MSDNは、RichTextBoxからのテキストコンテンツをフォーマットする単純なC#関数を作成しました: LINK

于 2012-10-22T08:36:13.983 に答える
0

シンタックスハイライトもサポートするWindows用の優れたソースコード編集コンポーネントであるscintillaをチェックしてください。そして、 ScintillaNETと呼ばれる.NETラッパーがあります。

于 2012-10-22T08:36:17.073 に答える
0

単純な正規表現を使用して、各タグの場所(開始と終了)を見つけ、以下のように色付けします。

richtextbox1.Select(start, end-start);

richtextbox1.SelectionColor = Color.Green;

richtextbox1.Select(start, 0);
于 2012-10-22T08:36:37.327 に答える
0

小さな構文強調プロジェクトについては、自分で作成してください! 既に投稿されているシンタックス エディターでの強調表示の例がいくつかあります。

https://stackoverflow.com/a/13007641/1033686

https://stackoverflow.com/a/13007710/1033686

より優れた強調表示が必要な大規模なプロジェクトの場合は、Scintilla.NET を使用します (ただし、少し重く、操作が難しい場合があることに注意してください!)

http://scintillanet.codeplex.com/

エンタープライズ プロジェクトの場合は、actipro シンタックス エディターなどの商用製品を使用してください。

http://www.actiprosoftware.com/products/controls/windowsforms/syntaxeditor?gclid=CI6rrqmglLMCFSfMtAodbE8AhA

于 2012-10-22T08:56:10.220 に答える