私はコードエディター(winforms)に取り組んでおり、次のような強調表示にトークンパラメーターを使用しています。
foreach (string token in tokens)
{
// Set the token's default color and font.
rtb.SelectionStart = index;
rtb.SelectionLength = token.Length;
rtb.SelectionColor = Color.Black;
rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Regular);
if (rtb != null)
{
//pass through to the HighlightType class
HighlighType HighlighType = new HighlighType(rtb);
lb.Hide();
lb.Items.Clear();
}
if (token == "//" || token.StartsWith("//"))
{
// Find the start of the comment and then extract the whole comment.
int length = line.Length - (index - start);
string commentText = rtb.Text.Substring(index, length);
rtb.SelectionStart = index;
rtb.SelectionLength = length;
HighlighType.commentsType(rtb);
break;
}
var keywordsDef = new KeyWord();
String[] keywords = keywordsDef.keywords;
for (int i = 0; i < keywords.Length; i++)
{
if (keywords[i] == token)
{
// Apply alternative color and font to highlight keyword.
HighlighType.keywordsType(rtb);
toolTip1.Show("this is a keyword", rtb); //&
break;
}
}
if (token == "letterA" || token.StartsWith("ab") || token.StartsWith("Ab") || token.StartsWith("AB"))
{
int length = line.Length - (index - start);
string commentText = rtb.Text.Substring(index, length);
rtb.SelectionStart = index;
rtb.SelectionLength = length;
lb.Visible = true;
int i = commentText.IndexOf(token);
KeyWord_Ab newCode = new KeyWord_Ab();
}
textchanged イベント内。
しかし、「スペース」を押すたびに、カーソル行のすべてのテキストが次のように強調表示されます。
強調表示は既に機能していましたが、問題は、すべてのテキストをスキャンして一列に強調表示するようなものでした。
それを避けるにはどうすればよいですか?