Tworzenie Tablicy TextBox - VB.NET

0

Witam. Dopiero zaczynam programować więc proszę o wyrozumiałość ;)

jezeli treść któregoś z textboxów (z przedzialu textbox3.text - textbox102.text) 
zostanie odnaleziony w richbox401
to
textbox2.text = textbox(szukany w richbox401).text

i kombinuje z kodem w ten sposób...fffffffffffffff.png

co ja robie źle?
bo wywala mi błąd że za dużo warunków dałem =/ a przecież musze porównać każdego textboxa z textboxem2 ;/

0

vvvv.png
to się niby kompiluje ale nie dziala ;/

póki co ręcznie wpisuje textbox2.....chce by go porównano z resztą textboxów (TextBox3.Text - TextBox102.text).....ale cos nie udaje mi sie ;/

źle te tablice tworze?
jak mam dodać istniejące textboxy do tablicy, a następnie się do nich odwolywac? :(

0
  1. Tablice po stworzeniu należy wypełnić, bo jest pusta.
  2. Miałeś szukać w richbox401 a zamiast tego porównujesz całość z TextBox2.text
while (i<=102) and (tablica(i).Text<> TextBox2.text)
  1. Wg tego co napisałeś powinno być:
i=3
While (i<=102) and (richbox401.Text.IndexOf(tablica(i).Text)<0)
    i=i+1
End While
If i<=102
    textbox2.text=tablica(i).Text
End If
0

aha...to w tym jest problem...ze tablice są puste....

to w takim razie robie całkiem nie to co potrzeba....
bo chce dodać "już istniejące textboxy" do tablicy a nie tworzyć nowe....
a te istniejące texboxy już mają swoje wartości....

można jakoś dodać istniejące textboxy do tablicy ?

0
tablica(3)=textbox3;
tablica(4)=textbox4;
...
tablica(102)=textbox102;
0
_13th_Dragon napisał(a):
tablica(3)=textbox3;
tablica(4)=textbox4;
...
tablica(102)=textbox102;

czyli aby nie przepisywac wszystkich tablic "ręcznie" to należałoby coś takiego napisać?

        Dim i As Integer
        Dim tablica As TextBox() = New TextBox(102) {}
        i = 2
   While (i<=102) 
         i=i+1
        tablica(i) = textbox(i);
   End While

dobrze to zrobilem? (mialem na celu dodanie wszystkich istneijacych textboxow 3-102 do tablicy)

1

Nie czaję coś to narobił ale powinieneś raczej użyć funkcji coś w stylu:

    Private Function FindTextBox(Parent As Control, Name As String, Optional SearchChild As Boolean = True) As TextBox
        Dim ctrl As Control
        FindTextBox = Nothing
        For Each ctrl In Parent.Controls
            If (TypeOf (ctrl) Is TextBox) And (ctrl.Name.Equals(Name) = True) Then
                FindTextBox = ctrl
                Exit Function
            Else
                If (SearchChild = True) Then
                    FindTextBox = FindTextBox(ctrl, Name, SearchChild)
                    If Not IsNothing(FindTextBox) Then
                        Exit Function
                    End If
                End If
            End If
        Next
    End Function

i użycie:

tablica(i) = FindTextBox(Me, "TextBox" & i.ToString)

Poza tym zamiast pętli while i zwiększać i o 1 chyba lepiej użyć for.

EDIT zmieniłem funkcję na lepszą rekurencyjnie szukającą też po kontrolkach potomnych

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