На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Раскраска слов во время ввода с клавиатуры , C# WinForms
    Простейший текстовый редактор, в richTextBox1 открываю текстовый файл , и потом крашу ключевые слова
    ExpandedWrap disabled
      private void ColorText()
              {
                  string[] words = {"select", "from", "where" };
       
                  for (int j = 0; j < words.Length; j++)
                  {
                      int i = 0;
                      while (i <= richTextBox1.Text.Length - words[j].Length)
                      {
                          i = richTextBox1.Text.IndexOf(words[j], i);
                          if (i < 0) break;
                          richTextBox1.SelectionStart = i;
                          richTextBox1.SelectionLength = words[j].Length;
                          richTextBox1.SelectionColor = Color.Blue;
                          i += words[j].Length;
                      }
                  }
       
       
              }


    а вот как сделать чтобы при вводе в richTextBox1 с клавиатуры после нажатия пробел написанное слово красилось не знаю , подскажите пожалуйста.

    Добавлено
    Сейчас пробую так
    ExpandedWrap disabled
      private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
              {
                  if (e.KeyCode == Keys.Space)
                  {
                      
                  }
              }


    а вот дальше ,
    по ходу надо как то введенный текст запоминать в промежуточный буфер ,
    а по нажатию "пробел" сверять буфер с ключевыми словами и если это ключевое слово то красить
    Сообщение отредактировано: kms -
      При анализе проблемы ты упустил,что есть по крайней мере 4 механизма изменения текста в текстовом поле. Даже если ты исключишь три из них (меню, мышка, визменен е тевста кодом программы),пользователь клавиатурой создаст текст, не совпадающий с тем набором букв, которые ты нсобрал в событии keyDown. Например, нажатие cntl-v изменяет текст не на 2 буквы и может добавить несколько пробелов. Имхо, надо анализировать весь текст после каждого изменения текста в onTextChange.
        Цитата MIF @
        При анализе проблемы ты упустил,что есть по крайней мере 4 механизма изменения текста в текстовом поле.


        спасибо за ответ , у меня будет такой упрощенный вариант изменение текста только с клавиатуры, т.е.
        как только нажали пробел надо проанализировать слово которое напечатали только что перед пробелом и если это ключевое слово то красить

        как то так

        Добавлено
        мне вот посоветовали пару вариантов
        https://ru.stackoverflow.com/questions/4210...%B8-richtextbox
        https://github.com/jacobslusser/ScintillaNET
        https://www.codeproject.com/Articles/161871...ax-highlighting

        ну и еще варианты пересмотрел исходники блокнотиков++ и всякие другие , так же на github и на codeproject.com
        перерыл и перепробовал вагон и маленькую тележку, но это не то

        мне сейчас требуется конкретный ответ на четкий вопрос , покрасить слово введенное с клавиатуры перед нажатием пробел

        т.е. пишу слово именно в richTextBox1 именно с клавиатуры как только нажал на клавишу "пробел" - анализ и если слово из массива ключевых слов то красим его в заданный цвет
        Сообщение отредактировано: kms -
          Прочитай мое собшение ешо раз.
          Ответь на 2 вопроса:
          1. сколько пробелов добавляетsя в тексте, если пользователь нажимает Ctr-A + Ctrl-C + Ctrl-V клавишы?
          2. Какое слово получается при нажатий клавиш S+E+L+E+C+T+I+O+N+LeftArrow+LeftArrow+LeftArrow+Space? Selection?

          Добавлено
          Нуда, в https://ru.stackoverflow.com/questions/4210...%B8-richtextbox тебе посоветовали тоже самое: анализировать весь текст.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0250 ]   [ 17 queries used ]   [ Generated: 16.04.24, 13:32 GMT ]