Witam mam takie pewne pytanko, albowiem chciałem zrobić sobie edytor tekstowy, który by mi pomagał tworzyć różne mody do gier i pomyślałem sobie, że bardzo mógłby mi pomoc w wielu zadaniach Syntax Highlight. Postanowiłem znaleźć jakiś prosty skrypt w internecie i znalazłem (poniżej wklejam kod), ale mam pewien problem, ponieważ oczywiście słowo, które wpisze w richtextboxe koloruje sie, na który kolor chce, ale jak plik ma np. 100 linijek to te słowa na początku zaczynają migać według mnie strasznie burzy to taka estetykę i wrażenia z pisania. I tutaj mam takie pytanko czy jest jakiś sposób, aby wyeliminować to "miganie"?
private void Rtb_TextChanged(object sender, EventArgs e)
{
settings = File.ReadAllLines(app_path + "/settings.txt");
Color originalColor;
MatchCollection keywordMath = Regex.Matches(mainText.Text, syntaxWords[0]);
MatchCollection greenStyle = Regex.Matches(mainText.Text, syntaxWords[1]);
MatchCollection yelloStyle = Regex.Matches(mainText.Text, syntaxWords[2]);
MatchCollection grayStyle = Regex.Matches(mainText.Text, syntaxWords[3]);
int originalIndex = mainText.SelectionStart;
int originalLength = mainText.SelectionLength;
if (settings[1].Contains("white"))
{
originalColor = Color.Black;
}
else {
originalColor = Color.White;
}
mainText.SelectionStart = 0;
mainText.SelectionLength = mainText.Text.Length;
mainText.SelectionColor = originalColor;
foreach (Match m in keywordMath)
{
mainText.SelectionStart = m.Index;
mainText.SelectionLength = m.Length;
mainText.SelectionColor = Color.Blue;
}
foreach (Match m in greenStyle)
{
mainText.SelectionStart = m.Index;
mainText.SelectionLength = m.Length;
mainText.SelectionColor = Color.Green;
}
foreach (Match m in yelloStyle)
{
mainText.SelectionStart = m.Index;
mainText.SelectionLength = m.Length;
mainText.SelectionColor = Color.Yellow;
}
foreach (Match m in grayStyle)
{
mainText.SelectionStart = m.Index;
mainText.SelectionLength = m.Length;
mainText.SelectionColor = Color.Gray;
}
mainText.SelectionStart = originalIndex;
mainText.SelectionLength = originalLength;
mainText.SelectionColor = originalColor;
mainText.Focus();
}