PageControl - mixowanie TabPage

0

Witam.
Mam TabControl1 i chciałbym po naciśnieciu na "Button1" aby te TabPage mixowały się (kazdy TabPage zawiera kilka TextBoxow, i to te TextBoxy chce poprzenosic w inne miejsca - do innych TabPage - więc pomyslalem że najlatwiej jest pozamieniac kolejnością całe TabPage).
Tzn aby TabPage zamieniały się miejscami (wraz z zawartością, textboxami itd itp).
Czyli aby TabPage (losowo) zamieniały swoje miejsca...a następnie zmieniały swoje nazwy (TabPage.Text) na właściwe, tzn wgl kolejności alfabetycznej..(1, 2, 3, 4, 5 itp itd...).

Jak to można zrobić najprościej?
Możliwe to? Czy muszę wszystkie wartości TextBoxów (na kazdym TabPage) zachować do String'ow ? a nastepnie oczyscic wszystkie TabPage - i wstawiac wartosci w String do losowych TabPage'ow ?

1
    Private Sub Shuffle(ByRef Tabs() As TabPage)
        Dim x As Integer
        Dim tempTab As TabPage
        Dim r As Random = New Random()

        For i As Integer = 0 To Tabs.GetUpperBound(0)
            x = r.Next(0, i)
            tempTab = Tabs(x)
            Tabs(x) = Tabs(i)
            Tabs(i) = tempTab
        Next i

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim Pages(TabControl1.TabCount - 1) As TabPage 'tablica do przechowywania zakladek

        For i As Integer = TabControl1.TabCount - 1 To 0 Step -1 'petla w dol
            Pages(i) = TabControl1.TabPages(i) 'przypisz zakladke jako i-ty element tablicy
            TabControl1.TabPages.Remove(TabControl1.TabPages(i)) 'usun zakladke
        Next

        Shuffle(Pages) 'procedura mieszajaca elementy tablicy ;)

        For i As Integer = 0 To Pages.Length - 1
            TabControl1.TabPages.Add(Pages(i)) 'dodaj zakladke z tablicy
            TabControl1.TabPages(i).Name = CStr(i) 'mozna zmienic nazwe
            TabControl1.TabPages(i).Text = "TabPage" & CStr(i + 1) 'mozna zmienic text
        Next

        ReDim Pages(0)
    End Sub
0

nn.png

a nie ma mozliwosci po prostu zamiany miejscami tych TabPage? konieczne jest usuwanie i tworzenie na nowo? (z uwagi na to ze tych TabPage jest okolo 100) i usuwanie i tworzenie na nowo zajmie troche czasu..

Nie można np. Zmienić po prostu TabPage.Text na inny ? np był 50, to zmienić na 3, był 100, zmienić na 9 itp itd...a nastepnie posegregować TabPages wg nazw w kolejności alfabetycznej TextBox.Text? od 1 w góre ?

0

A jak ma działać? Na screenie widać jak byk widać, że masz odwołanie do nieistniejącego obiektu i TabControl1 jako Nothing... a dlaczego tak masz tego ja nie wiem. Ogarniaj trochę co się dzieje w kodzie po co ustawiłeś podgląd zmiennych jak najwyraźniej z niego nie korzystasz.

Samo mieszanie powinno działać jak poniżej:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim x As Integer
        Dim tempTab As TabPage
        Dim r As Random = New Random()

        For i As Integer = 0 To TabControl1.TabCount - 1
            x = r.Next(0, i)
            tempTab = TabControl1.TabPages(x)
            TabControl1.TabPages(x) = TabControl1.TabPages(i)
            TabControl1.TabPages(i) = tempTab
        Next

        For i As Integer = 0 To TabControl1.TabCount - 1
            TabControl1.TabPages(i).Text = "TabPage" & CStr(i + 1)
        Next
    End Sub

EDIT: Pytający usunął post w którym twierdził że mu nie działa... a na zamieszczonym przez niego screenie było jak to co wyżej napisałem.

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