Я пытаюсь изменить цвет для конкретной строки в richTextBox
с открытием текстового документа внутри него уже существующей строкой или добавить через richTextBox
, чтобы сохранить сохраненный текст и черный, кроме определенных линия.Как изменить цвет для определенной строки в richTextBox
Я попал в событие richTextBox_TextChanged
, но не подходит для меня. Он меняет текст для определенной строки и сохраняет текст черного цвета, но во всех случаях у меня одинаковые две проблемы: сначала:
Если я добавляю текст к определенной цветной красной строке из richTextBox
, слитой с другим словом или символом, например:
если содержание текста документа:
some string
some string
red string
и если добавить к нему что-то вроде:
some string
some string
xred string
или:
some string
some string
red stringx
результат становится второй, если добавить еще одну строку, равную "red string"
:
some string
some string
red stringx // << This line remains red
red string // << and this does not changes and remains black
И еще одна проблема, если я пишу текст после красной строки в richTextBox
, все следующий текст на этапе написания тоже становится красный.
Например, строка, которая должна быть красный:
string Str = "red string";
таким образом:
Color aColor = Color.FromName(Str.Split(' ')[0]);
if (richTextBox1.Text.Contains(Str) && aColor != Color.Red)
{
richTextBox1.Select(richTextBox1.Text.IndexOf(Str), Str.Length);
richTextBox1.SelectionColor = Color.Red;
}
или таким образом:
Color aColor = Color.FromName(Str.Split(' ')[0]);
if (richTextBox1.Text.Contains(Str) && aColor != Color.Red)
{
richTextBox1.Find(Str);
richTextBox1.SelectionColor = Color.Red;
}
Или это способ, который может содержать перечисленные строки менять цвета для каждого цвета, если это необходимо, string[] words = { "specword1", "specword2" };
, но в этом случае только что показанные как отличающиеся лор способ сделать это, с одной и только нужное значение сверху, и пустой string[] words
:
string[] words = { "" };
Color[] colors = { Color.Red };
for (int i = 0; i < words.Length; i++)
{
string word = words[i];
Color color = colors[i];
{
richTextBox1.Find(Str);
richTextBox1.SelectionColor = color;
}
}
У меня же две проблемы в результате со всеми попытками, и если я использую его с Form1_Load
он просто не делает любой изменения цвета.
Так мне интересно, что может быть решение для этого случая, и только одна вещь приходит на ум, но не уверен, что это правильный способ решения этой проблемы:
Я не знаю, как, но каким-то образом сделать недоступным редактирование красной строки, которая всегда находится в отдельной строке в текстовом документе и в то же время не позволяет писать или вставлять ее вручную в richTextBox
.
В любом случае, если это может помочь с первой проблемой, похоже, что это не помогает избежать изменения цвета для последующего текста после красной строки.
Здравствуйте, мне нужно, чтобы получить результаты, описанные в первом примере, но все еще была та же проблема. Если я добавлю «красную строку» вручную, если я напишу что-нибудь после «красной строки», символы станут красными –
Проверьте мой обновленный ответ – Damith
Предыдущий ответ был на 99% ответил, в этом случае я не могу ничего писать, чтобы добавить после символа. Так что для моего случая ваше первое решение работает хорошо, за исключением красного цвета после красной строки, но не так, как с моими примерами, во время написания, тогда только нужные строки красные. –