Jak napisać warunek dla każdego TabPage na PageControl?

0

witam.

Chcialbym napisać instrukcje:

zapisz textbox znajdujacy sie na KAZDYM TABPAGE do pliku index_tabpage.txt
i nie wiem jak się odwołać do "KAZDY ISTNIEJACY TABPAGE", bo chodzi o to że czasem tych tabpage moze być 5, a czasem 100....dlatego program ma sprawdzać ile jest tych tabpage i nastepnie wykonac warunek "dla kazdego istniejacego tabpage"

0

Przejdź po nich w pętli.

0

foreach

0

no wlasnie nie potrafię tego zrobic....

napisalem cos takiego:

        Dim obecny_page As Integer
        obecny_page = 0
        While obecny_page < TabControl1.TabPages.Count





            'tu chcialbym sie odwolac do - TabControl1.TabPages(obecny_page).   a konkretniej do UserControl1.TextBox1.Text ktory zostal umieszczony na kazdym TabPage



            'jezeli niema katalogu, to go stworz
            If (Not System.IO.Directory.Exists("C:\testujemy\tresc")) Then
                System.IO.Directory.CreateDirectory("C:\testujemy\tresc")
            End If

            'zapisujemy tresc posta do pliku
            Dim w As New IO.StreamWriter("C:\testujemy\tresc\tresc" + obecny_page + ".txt")
            w.Write(TextBox1.Text)
            w.Close()

            obecny_page = obecny_page + 1
        End While

ale nie wiem jak sie odwolac do kazdego TextBox1.Text znajdujacego na każdym TabPage (UserControl1)... bo jezeli wpisze po prostu "textbox1" to nie przejdzie....bo każdy TabPage ma takiego samego TextBoxa, więc trzeba to za pomocą TabPage jakoś przejsc ;/

0

Szukałbym w kolekcji TabControl1.TabPages(obecny_page).Controls?

0
somekind napisał(a):

Szukałbym w kolekcji TabControl1.TabPages(obecny_page).Controls?

co mam szukac?
bo mam tam z 3 textboxy....
a potrzeba mi sie odlować do konkretnie TextBox1

@kAzek

0

Przejdź po pozycjach tej kolekcji i znajdź element, w którym właściwość Name wynosi TextBox1.

0
foreach(TabControl tab in tabControl1.TabPages)
            {
                TextBox[] tb = tab.Controls.Find("TextBox1", false) as TextBox[];
            }

Ale to c#, musisz to przekonwertować.

0

o kurcze, to w C# wystarczy tylko tyle?

a ja w VB już całą litanie napisałem i mi nie działa ;/

        Dim obecny_page As Integer
        obecny_page = 0
        While obecny_page < TabControl1.TabPages.Count



            'tu chcialbym sie odwolac do - TabControl1.TabPages(obecny_page).   a konkretniej do TextBox1.Text ktory kazdy page zawiera (dodane za pomoca UserControl1)


            Dim ctrl, ctrl2 As Control
            For Each ctrl In TabControl1.TabPages(obecny_page).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
                            If box.Name = "TextBox1" Then
                                'jezeli niema katalogu, to go stworz
                                If (Not System.IO.Directory.Exists("C:\testujemy\tresc")) Then
                                    System.IO.Directory.CreateDirectory("C:\testujemy\tresc")
                                End If


                                'zapisujemy tresc posta do pliku
                                Dim w As New IO.StreamWriter("C:\testujemy\tresc\tresc" + obecny_page + ".txt")
                                w.Write(box.Text)
                                w.Close()


                                obecny_page = obecny_page + 1
                            End If
                        End If
                    Next
                End If

            Next

        End While
1

Nazywasz TextBox'y na każdej zakładce tak samo tylko z końcówka taki sam numer jak indeks zakładki np. TextBox0, TextBox1, TextBox2 itd. i sobie szukasz:

    Private Function GetTextBoxCtrlTextByCtrlName(ParentCtrl As Control, TextBoxName As String) As String
        GetTextBoxCtrlTextByCtrlName = ""
        If ParentCtrl.HasChildren Then
            For Each Ctrl As Control In ParentCtrl.Controls
                If (TypeOf Ctrl Is TextBox) And (Ctrl.Name.Equals(TextBoxName)) Then

                    GetTextBoxCtrlTextByCtrlName = Ctrl.Text
                    Exit Function
                End If
                GetTextBoxCtrlTextByCtrlName = GetTextBoxCtrlTextByCtrlName(Ctrl, TextBoxName)
            Next
        End If
    End Function


    Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Const FILE_PATH As String = "d:\testujemy\tresc\"

        If (Not System.IO.Directory.Exists(FILE_PATH)) Then
            System.IO.Directory.CreateDirectory(FILE_PATH)
        End If

        For PageIndex As Integer = 0 To TabControl1.TabCount - 1
            Dim w As New IO.StreamWriter(FILE_PATH + "tresc" + CStr(PageIndex) + ".txt", True)
            w.Write(GetTextBoxCtrlTextByCtrlName(TabControl1.TabPages(PageIndex), "TextBox" + CStr(PageIndex)))
            w.Close()
        Next
    End Sub

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