1

プログラミング言語のソース コードを解析するアプリケーションがあります。System.Windows.Forms.RichTextBoxコードエディタとして使用しています。次のアルゴリズムで言語のキーワードを強調表示します。

  • テキストが変更されるたびに、最後の単語の先頭に戻り、この部分文字列の単語を呼び出します。
  • キーワードに単語が含まれている場合は、単語の色を青に
    設定します。そうでない場合は、単語の色を黒に設定します

RichTextBox.SelectionStartsRichTextBox.Select(int, int)およびを使用してRichTextBox.SelectionColorいます。それはうまく機能しています。

ただし、Enter キーを押すと、カーソルが行頭に戻ります。ソースコードの編集者として、私はそれが懇願する最後の行に従うことを望んでいます。前の行のパディング空白文字を stringstrに入れ、次にrichTextBox.Text = richTextBox.Text.Insert(richTextBox.SelectionStarts, str). そうすると、すべてのテキストの強調表示が壊れ、すべてのテキストが青色になります。

ハイライトを壊さずに行のパディングスペースを追加する方法を誰か提案できますか?

4

2 に答える 2

2

あなたのコードの正確な問題が何であるかについての手がかりはありません。多分あなたは確立された解決策を見るべきです。たとえば、Scintilla.NETは、よく知られているScintillaコントロールの.NETラッパーです。カスタムレクサーで拡張できるので、ニーズに合うかもしれません。

于 2012-07-19T18:12:49.520 に答える