Jak wyszukać daną literę w richTextBoxie?

0
 string szukaj = textBox1.Text;
            string result;

            result = richTextBox1.Text.Length.ToString().Contains(szukaj) ? "Znaleziono" : "Nie znaleziono";
            if (result == "Znaleziono")
            {
                listBox1.Items.Add("Znaleziono "  +szukaj);
            }

Jak wyszukać daną literę w richTextBoxie? Wiem że:

  1. string.Contains - określa, czy podciąg zawiera się w ciągu;
  2. string.IndexOf - określa pozycję, na której podciąg występuje w ciągu;
  3. string.LastIndexOf - określa pozycję, na której podciąg występuje w ciągu po raz ostatni.
0

Rozbij sobie tą długą linijkę na pojedyncze wywołania / pobierania właściwości i sprawdź w debuggerze co właściwie się dzieje.

1

Nie wiem w czym problem, chyba, że coś źle zrozumiałem. Użyj metody string'a IndexOf(...), jak znajdzie to zwróci ci pozycję, jak nie zwróci -1:

MessageBox.Show(richTextEdit1.Text.IndexOf('D'));
0
szukaj = richTextBox1.Text.IndexOf('a');
MessageBox.Show("Szukany wyraz znajduje się na pozycjach: " + szukaj);

Dobra mam takie coś. Wyszukuje tylko jeden znak zamiast wszystkich znaków. Chcę to zrobić w pętli i przeszukiwać poszczególne linie. Jak zrobić aby szukało do końca linii i zwracało wszystkie znaki w niej występujące?

Okay mam już. Szukany kod to:

int len = this.richTextBox1.TextLength;
      int index = 0;
      int lastIndex = this.richTextBox1.Text.LastIndexOf(this.textBox1.Text);

      while ( index < lastIndex )
      {
        this.richTextBox1.Find(this.textBox1.Text, index, len, RichTextBoxFinds.None);
        this.richTextBox1.SelectionBackColor = Color.Yellow;
        index = this.richTextBox1.Text.IndexOf(this.textBox1.Text, index) + 1;
      }

Aczkolwiek kod nie jest tak dobry. Wyszukuje tylko jedną literę w każdym słowie. Jakieś sugestie moi drodzy?

0

Czy Ty nie mylisz czasem wyszukiwania z zaznaczaniem?

0

Obecny kod który podałem jest z zaznaczanie i taki już może zostać tyle, że wyszukuje tylko jedną literę w każdym słowie...
I jeszcze jedno pytanie. Dlaczego nie dodaje mi żadnych elementów (np. Wyszukano wyraz Ala w lini: 1) do listTextBoxa? Po usunięciu tego kodu o dziwo zawsze dodaje.

0

A co innego może znaleźć, skoro poszukujesz jednej litery?
Weź może podaj jakiś przykład tekstu do przeszukania i wyniku przeszukiwania.

0

Działa już wszystko. Pozostaje mi zadać pytanie: Jak sprawić by podświetlone litery w richtextboxie odzyskały swój domyślny kolor?

1

Nie ma metody, która zmieni na wartości domyślne, ale możesz na początku programu przechować kolor domyślny:

Color defaultSelectionBackColor = Color.Window;
(...)
richTextEdit1.SelectionBackColor = defaultSelectionBackColor;

Lub bez tego, domyślnie tło jest Color.Window w większości kontrolek, czyli ustawić na Color.Window zamiast default...

1 użytkowników online, w tym zalogowanych: 0, gości: 1