こんにちは。私はポスターとしてスタックオーバーフローを初めて使用しますが、何年も参照してきました。私はこの問題を約 2 週間調査してきましたが、近い解決策を見てきましたが、まだ問題が残っています。
アセンブリ コード ファイルを読み取り、別のプログラムを介してさらに処理するためにさまざまなテキスト項目を強調表示する C# GUI を作成しています。私のフォームには、テキストが表示される RichTextBox があります。以下のケースでは、「;」の場所でテキストを選択しようとしています。行の終わりまでテキストを赤に変更します。これが私が使用しているコードです。
注意: プログラムによって読み取られるファイルの長さには一貫性がありません。すべての行が同じようにフォーマットされているわけではないため、「;」を単純に検索することはできません。そしてそれを操作します。
別の投稿で、メンバーが AppendText の拡張メソッドを提供しましたが、元のテキストが再フォーマットされたテキストと共に存在することを除いて、完全に機能するようになりました。そのサイトへのリンクは 次のとおりです。リッチテキストボックスでマルチカラーを使用する方法
// Loop that it all runs in
Foreach (var line in inArray)
{
// getting the index of the ‘;’ assembly comments
int cmntIndex = line.LastIndexOf(';');
// getting the index of where I am in the rtb at this time.
int rtbIndex = rtb.GetFirstCharIndexOfCurrentLine();
// just making sure I have a valid index
if (cmntIndex != -1)
{
// using rtb.select to only select the desired
// text but for some reason I get it all
rtb.Select(cmntIndex + rtbIndex, rtb.SelectionLength);
rtb.SelectionColor = Color.Red;
}
}
以下は、元の形式のファイルからのサンプル アセンブリ コードです。テキストはすべて黒です。
;;TAG SOMETHING, SOMEONE START
ASSEMBLY CODE ; Assembly comments
ASSEMBLY CODE ; Assembly comments
ASSEMBLY CODE ; Assembly comments
;;TAG SOMETHING, SOMEONE FINISH
がrtb.GetFirstCharIndexOfCurrentLine()
呼び出されると、RTB の有効なインデックスが返されます。返された値を追加すると、上のテキストを選択して赤くすること line.LastIndexOf(';')
ができると思います。; Assembly comments
何が起こるかというと、線全体が赤くなります。
上記の AppendText メソッドを使用すると、
ASSEMBLY CODE (this is black) ; Assembly comments (this is red) (the rest is black) ASSEMBLY CODE ; Assembly comments
黒のコードは、色を変更したテキストとまったく同じコードです。この場合、RTB の行をクリアする方法やテキストを上書きする方法を知る必要があります。私が試したすべてのオプションで、これらの行が削除されました。
とにかく、それは長かったと確信していますが、私はここで本当に困惑しており、アドバイスをいただければ幸いです.