Przeszukiwanie TextBoxów znajdujących się na TabPage

2014-09-11 20:58
0

W jaki sposob moge przeszukac WSZYSTKIE TextBox3, które znajdują się na kartach TabPage na PageControl1 ?

to ma wyglac tak:

jeżeli słowo z Textbox3.Text znajduje sie w przeszukiwana_linia to.....TabControl1.SelectedTab = box.Parent
gdyby nie UserControl to wystarczyłby taki kod:

Private Sub szukanie_w_liniach()
        Dim przeszukiwana_linia As String = ListBox1.SelectedItem.ToString
        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 TextBox Then
                        Dim box As TextBox = ctrl2
                        Dim pos As Boolean = przeszukiwana_linia.Contains(box.Text)
                        If pos And Not box.Text = "" Then
                            TextBox2.Text = box.Text
                            TabControl1.SelectedTab = box.Parent
                            Exit Sub
                        End If
                    End If
                Next
            End If
        Next

Ale niestety on nie przeszukuje TextBoxow znajdujacych sie na UserControl :(

@kAzek

edytowany 1x, ostatnio: kosmita90he, 2014-09-11 21:01

Pozostało 580 znaków

2014-09-11 21:01
0

Wiesz że skoro to wszystko masz w UserControl to możesz w nim napisać metodę która robi co tam chcesz?

Pozostało 580 znaków

2014-09-11 21:04
0

wlasnie chodzi o to, że Przeszukiwany tekst znajduje sie na Form1 , natomiast elementy które aplikacja ma szukac w przeszukiwanym tekscie znajdują sie na UserControl1

po za tym mam wiele kart w programie....TabPages również są na Form1...a cała zawartość TabPage'a to już UserControl

mi się zdaje , że jak mam ten kod foreach in Page.Controls to sprawdza tylko TextBoxy...pewnie trzeba jeszcze jakoś do PageControl wejsc i dopiero szukac

edytowany 2x, ostatnio: kosmita90he, 2014-09-11 21:45

Pozostało 580 znaków

2014-09-11 21:56

Nie wiem już czy dobrze zrozumiałem masz na każdym tab kontrolkę UserControl na której jest TextBox3 i teraz jeżeli w TextBox3 tekst jest częścią (lub całością) tekstu zawartego w zaznaczonej pozycji ListBox to trzeba wybrać tą zakładkę na której jest ten TextBox?

    Private Sub SelectTabByTextBoxText(TabPage As TabPage, ParentCtrl As Control, TextBoxName As String, SearchText As String)
        If ParentCtrl.HasChildren Then
            For Each Ctrl As Control In ParentCtrl.Controls
                If ((TypeOf Ctrl Is TextBox) And (Ctrl.Name.Equals(TextBoxName)) And (Ctrl.Text.Length > 0) _
                        And (SearchText.Contains(Ctrl.Text))) Then
                    If Not IsNothing(TabPage) Then
                        Dim TabCtrl = CType(TabPage.Parent, TabControl)
                        TabCtrl.SelectedTab = TabPage
                    End If
                    Exit Sub
                End If
                SelectTabByTextBoxText(TabPage, Ctrl, TextBoxName, SearchText)
            Next
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For PageIndex As Integer = 0 To TabControl1.TabCount - 1
            SelectTabByTextBoxText(TabControl1.TabPages(PageIndex), TabControl1.TabPages(PageIndex), "TextBox3", ListBox1.SelectedItem.ToString)
        Next
    End Sub

EDIT: Poprawiłem bo się pomyliłem i nie działało :/


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek, 2014-09-11 22:12
dziala ! :D mialbym jeszcze malutką prosbe i dam Ci juz spokoj :D (prawde mowiac to juz 50% programu mi napisales chyba xD) - kosmita90he 2014-09-11 22:22

Pozostało 580 znaków

2014-09-11 22:16
0

tak, dobrze zrozumiales...
juz dziala wszystko fajnie :)

miałbym jeszcze tylko jedną prosbę..... malutką :)

jeszcze bym chciał aby na tym samym tabpage gdzie znaleziono "slowo" z textboxa3, to obok niego jest textbox2 , chcialbym by cała linijka ListBox1.SelectedItem.ToString wędrowala wlasnie tam, w przypadku jeżeli (ListBox1.SelectedItem.ToString zawiera w sobie textbox3)

sorki ale nie chcialem odrazu tyle tlumaczyc bo za duże zamieszanie by bylo :)
@kAzek

edytowany 4x, ostatnio: kosmita90he, 2014-09-11 22:23

Pozostało 580 znaków

2014-09-11 22:37
0

Umiesz w ogóle korzystać z funkcji / procedur? Przecież do zmiany tekstu w TextBox po nazwie kontrolki już miałeś teraz wystarczy niewielka przeróbka na funkcję procedury służącej do zmiany wybranej zakładki i po krzyku.

    Private Sub SetTextBoxCtrlTextByCtrlName(ParentCtrl As Control, TextBoxName As String, CtrlText As String)
        If ParentCtrl.HasChildren Then
            For Each Ctrl As Control In ParentCtrl.Controls
                If (TypeOf Ctrl Is TextBox) And (Ctrl.Name.Equals(TextBoxName)) Then
                    Ctrl.Text = CtrlText
                    Exit Sub
                End If
                SetTextBoxCtrlTextByCtrlName(Ctrl, TextBoxName, CtrlText)
            Next
        End If
    End Sub

    Private Function SelectTabByTextBoxText(TabPage As TabPage, ParentCtrl As Control, TextBoxName As String, SearchText As String) As Boolean
        SelectTabByTextBoxText = False
        If ParentCtrl.HasChildren Then
            For Each Ctrl As Control In ParentCtrl.Controls
                If ((TypeOf Ctrl Is TextBox) And (Ctrl.Name.Equals(TextBoxName)) And (Ctrl.Text.Length > 0) _
                        And (SearchText.Contains(Ctrl.Text))) Then
                    If Not IsNothing(TabPage) Then
                        Dim TabCtrl = CType(TabPage.Parent, TabControl)
                        TabCtrl.SelectedTab = TabPage
                        SelectTabByTextBoxText = True
                    End If
                    Exit Function
                End If
                SelectTabByTextBoxText = SelectTabByTextBoxText(TabPage, Ctrl, TextBoxName, SearchText)
            Next
        End If
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For PageIndex As Integer = 0 To TabControl1.TabCount - 1
            If SelectTabByTextBoxText(TabControl1.TabPages(PageIndex), TabControl1.TabPages(PageIndex), "TextBox3", ListBox1.SelectedItem.ToString) Then
                SetTextBoxCtrlTextByCtrlName(TabControl1.TabPages(PageIndex), "TextBox2", ListBox1.SelectedItem.ToString)
                Exit Sub
            End If
        Next
    End Sub

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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