Masowe wyszukanie tekstu w wielu komponentach RichTextBox

0

Mam aplikację, do której chciałbym dodać "wyszukiwarkę tekstu".
Tzn, po wpisaniu do TextBox wyrazu "przykladowy tekst", miałaby przeszukać wszystkie istniejące RichTexBoxy i odtworzyć zakładkę w której się znajdzie ten "przykladowy tekst".
Prosiłbym o jakieś propozycję jak to zrobić. Dziękuję
ahhh.png

0

Tak miało być, poprzedni post do usunięcia (nacisnąłem tab i spacja i post się wysłał, o :D)

 
dla każdego (RichTextBox o numerze większym od 1)
        znaleziono = wyszukaj (ciąg znaków z RichTextBox[1]) 
        jeśli (znaleziono) 
                 przejdź do tego bieżącego RichTextBox 
                 szukać dalej ? ok : wyskocz z pętli
        koniec jeśli 
        następny RichTextBox 
koniec dla każdego  
1
foreach(RichTextBox box in RichTextBoxList)
  {
   int pos=box.Text.IndexOf(PrzykladowyTekst); // Zastanowić się nad http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.find%28v=vs.110%29.aspx
   if(pos>=0)
     {
      box.SelectionStart=pos;
      box.SelectionLength=PrzykladowyTekst.Length;
      TabControl1.SelectedTab=TabPage(box.Parent);
      box.Focus();
      break;
     }
  }

Patrz komentarz, dokładniej w poście od @vpiotr niżej.

0

pisze w Visual Basic...
kod ktory napisales jest chyba do C++

0

To jest .NET wszystkie metody oraz właściwości nazywają się tak samo, natomiast foreach, for oraz if pewnie rozpoznałeś.

0

pisze w Visual Basic...
pisanie dla .NET w czymkolwiek innym niż C# powoduje że i tak musisz poznać C# (bo w tym języku będzie większość przykładów, tutoriali…) a wtedy wątpliwym staje się wybór czegokolwiek innego niż C#.
To jak z Fordem, który sprzedawano w każdym kolorze pod warunkiem że był to czarny.

2
visualbacic23 napisał(a):

pisze w Visual Basic...
kod ktory napisales jest chyba do C++

W C#. I jest na to prosta rada: http://www.developerfusion.com/tools/convert/csharp-to-vb/

0

zrobilem cos takiego:

        Dim searchstring As String = TextBox1.Text
        ' The word you're looking for
        Dim count As New List(Of Integer)()
        For i As Integer = 0 To RichTextBox1.Text.Length - 1
            If RichTextBox1.Text.IndexOf(searchstring, i) <> -1 Then
                'If the word is found
                'Add the index to the list
                count.Add(RichTextBox1.Text.IndexOf(searchstring, i))
            End If
        Next
        Try
            For i As Integer = 0 To count.Count - 1
                RichTextBox1.[Select](count(i), searchstring.Length)
                RichTextBox1.SelectionColor = Color.Red
                RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
                count.RemoveAt(i)
            Next
        Catch
        End Try
        RichTextBox1.[Select](RichTextBox1.Text.Length, 0)
        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Italic)

co tu zmienic by wyszukiwanie bylo we wszystkich RichTextBox a nie tylko w jednym?

zamiana znacznika <code class="delphi"> na <code class="vbnet"> - fp

0

Skoro zostałem już wywołany to odpiszę... Nie znam Visual Basic'a i dziś nie mam czasu na odp.
Wydaje mi się, że źle podszedłeś do problemu tworząc setkę zakładek - robiłeś to ręcznie? Opisz co jest twoim celem a może uda się lepiej zaprojektować tą aplikację. Może lepiej byłoby stworzyć listę plików w 1 komponencie i szukać frazy w nich dopiero gdy znajdzie zaznaczać pozycje jakiegoś ListBox i otwierać dynamicznie zakładkę z RichBox'em dopiero na żądanie.
Użytkownik i tak nie ogarnie poruszania się po 100 zakładkach - to jest naprawdę uciążliwe.
Tworząc dynamicznie komponenty masz tą zaletę, że przy tworzeniu możesz sobie od razu wrzucić ten komponent do tablicy aby później go nie szukać. Teraz odnalezienie konkretnego komponentu jest kłopotliwe (choć możliwe).

0

to jest swojego rodzaju "baza danych"
w kazdej zakladce są inne informacje w richtextboxach...uzytkownik po zakladkach raczej nie bedzie sie poruszać wcale, po za wyjątkiem sporadycznego wyszukania jakiejś konkretnej zakładki zawierającej "przykladowy tekst"...
w tym celu jest mi potrzebne zrobienie takiej wyszukiwarki co będzie szukać we wszystkich richtextboxach..

2

Na podstawie tego co @ _13th_Dragon podał:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim SearchText As String = "test"

        Dim ctrl, ctrl2 As Control
        For Each ctrl In TabControl1.Controls
            If TypeOf (ctrl) Is TabPage Then
                Dim page As TabPage = ctrl
                For Each ctrl2 In page.Controls
                    If TypeOf (ctrl2) Is RichTextBox Then
                        Dim box As RichTextBox = ctrl2
                        Dim pos As Integer = box.Text.IndexOf(SearchText)
                        If (pos >= 0) Then
                            box.SelectionStart = pos
                            box.SelectionLength = SearchText.Length
                            TabControl1.SelectedTab = box.Parent
                            box.Focus()
                            Exit Sub
                        End If
                    End If
                Next
            End If
        Next
End Sub
1
kAzek napisał(a):

Na podstawie tego co @ _13th_Dragon podał:

Dim pos As Integer = box.Text.IndexOf(SearchText)

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.find%28v=vs.110%29.aspx

0

@koxu444
dzisiaj, 17:36
czesc, czy jestes w stanie pomoc mi z tym kodem?
http://forum.4p[...]/Newbie/156859-masowe_wyszukanie_tekstu_w_wielu_komponentach_richtextbox
jestem poczatkujacy i juz łapie powoli wszystko , ale z tymi tablicami itd nie wiem jak poradzić sobie....
wiem że tam trzeba utworzyc tablice z zakresem 0-99 dla kazdego RichTextBoxa....ale jak dalej to przypisywać każdemu RichTextBoxowi liczbe to nie mam pojęcia.... bardzo bylbym wdzieczny jakbys mi pomogł...
niby jakies kody ktos w temacie napisał ale one nie działają ;/

to co napisal _13_th_dragon byloby pewnie ok ale domyslam się że tam RichTextBoxList trzeba utworzyc... to pewnie nazwa tablicy? z gory dzieki za pomoc
(jezeli nie znasz VB to nawet w jakims C++ podpowiedz , zebym zobaczyl mniej wiecej jak to stosować)

ALERT!!! LEŃ DETECTED!!! CHCE GOTOWCA!!! ALERT!!!

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