logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

vb.net - dynamiczna tablica i funkcja pobierjąca tą tablicę

balascior 08 Wrz 2011 22:44 2747 6
REKLAMA
  • #1 9909030
    balascior
    Poziom 10  
    Posty: 21
    Witam wszystkich,

    najpierw zaprezentuję, później wytłumaczę:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    No i w tym wszystkim mi chodzi o to, że tam gdzie napisałem że zaczynają się schody tam jest moje zakłopotanie.

    chodzi o to by funkcja zaznaczenie_badan była taka zaradna i sprawdzała każdą tablicę dynamiczną checkboxów które podsunę.

    jeśli ktoś się z czymś podobnym spotkał to proszę o sugestie, bo problem tam gdzie addressof tablicy. Robiłem tak:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    , ale tak jest niedopuszczalne.

    pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 9915420
    vViktor
    Poziom 12  
    Posty: 20
    Pomógł: 5
    Chcesz przekazać po wywołaniu zdarzenia kontrolki, tablice kontrolek w której się ona znajduje do funkcji zaznaczenie_badan?

    Patrząc na logikę znalazłem przy okazji parę błędów w kodzie. Chyba że kod jest bardziej obszerny niż tu przedstawiłeś. W każdym bądź razie napisałem zgodnie z Twoim kodem takie coś ale nie wiem czy o to Ci chodziło:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 9917425
    balascior
    Poziom 10  
    Posty: 21
    Tak, dokładnie o to mi chodzi tak jak napisałeś. Właśnie o coś takiego mi chodziło. Muszę przyznać, że strasznie początkujący jestem i wiedzę mam jeszcze nie wielką i chaotyczną, bo nie wiem za bardzo co w tym kodzie zrobiłeś. Tak przy okazji jeśli masz dla mnie jakąś konkretną propozycję jeśli chodzi o naukę to był bym bardzo wdzięczny, a poza tym bardzo dziękuję za powyższe.
  • REKLAMA
  • #4 9917458
    vViktor
    Poziom 12  
    Posty: 20
    Pomógł: 5
    Po pierwsze nie mogłeś podpiąć swojej funkcji pod zdarzenie kontrolki dlatego że przy podpinaniu zdarzenia do jakiejś procedury musi ona mieć standardowo dwa argumenty. W jednym przekazywany jest obiekt (sender) który wywołał zdarzenie a w drugim przekazywana jest paczka (EventArgs e) z dodatkowymi danymi na temat zdarzenia. Natomiast Twoja funkcja w argumentach przyjmuje tablicę. Dlatego kompilator rzucał się bo mu się nie zgadzały argumenty.

    Ten kod (co podałem wyżej) można jeszcze bardziej uprościć po pierwsze wrzucając Twoją funkcję odrazu do procedury która jest wywoływana przez zdarzenie a po drugie nie przekazując referencji do tablicy poprzez Tag w kontrolce tylko odnosząc się bezpośrednio do tablicy. Z tym że odnośnie tego drugiego, wtedy stanie się niemożliwe rozróżnienie dwóch osobnych tablic kontrolek a tak możesz stworzyć ile tylko chcesz grup checkbox-ów niezależnych od siebie ;)

    Uhh.. Byćmoże dosyć skomplikowanie to napisałem bo tylko teoretycznie bez żadnych przykładów a wiem że początkującym łatwiej jest na przykładach niż na teorii więc pytaj jak masz jeszcze jakieś wątpliwości :)
  • #5 9917565
    balascior
    Poziom 10  
    Posty: 21
    Muszę powiedzieć, że ogarniam z grubsza dla czego tak musi być (te przekazywane argumenty sender i e), ale nie wiem dlaczego konwertujesz sender na checkboxy i nie wiem nic o tagach. Wiem, nie będziesz mi to tłumaczył wszystkiego o co zapytam ale jak możesz słowo komentarza napisać odnośnie tego kodu. Co się dzieje i dlaczego?
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod



    A ja już poszukam czegoś sobie do nauki, bo wydaje mi się że zaledwie tylko troszeczkę liznąłem vb :)
  • REKLAMA
  • #6 9917609
    vViktor
    Poziom 12  
    Posty: 20
    Pomógł: 5
    Odnośnie nauki ciężko mi polecić coś bo sam na co dzień nie programuje w VB.NET wcale. Umiem w nim coś tylko dlatego że zaczynałem przygodę z programowaniem od VB5 i VB6 a teraz umiem w miarę C# przez co ogarniam dotnetowy framework.

    Sender konwertuje na checkbox'a dlatego że w zdarzeniu kontrolka przekazywana jest jako nic niemówiący "object". Żeby dostać się do właściwości checkbox'a konwertuje więc obiekt na kontrolkę żeby można było rozpoznać właściwości typowe dla checkbox'a a w tym przypadku dostać się do właściwości "Tag".
    Tag jest to taka ekstra właściwość dla każdej kontrolki (nie tylko checkbox) którą można wykorzystać żeby przypisać coś niestandardowego do kontrolki. Ja wykorzystałem ją do tego żeby przypisać do każdej kontrolki referencje tablicy w której się znajduje. Dzięki temu kontrolki "pamiętają" swoją tablice.
    Ale jak już wcześniej pisałem nie jest to wszystko konieczne jeśli Twoim celem jest jedna tablica kontrolek. Wtedy możesz za przeproszeniem olać te konwersje i tagi i odwołać się bezpośrednio do zmiennej tablicowej o nazwie "tablica".
  • #7 9917704
    balascior
    Poziom 10  
    Posty: 21
    Dobra, to już co raz więcej rozumiem. Takie rozwiązanie trafia w 100% w moje gusta, bo w programie mam 3 tablice, które będą sprawdzane. Poszukam sobie coś do nauki a Tobie bardzo dziękuję za wszelkie info i za podpowiedź w postaci kodu. :)

    Temat oznaczam jako rozwiązano.

    pozdrawiam

Podsumowanie tematu

✨ W dyskusji poruszono problem dynamicznego tworzenia tablicy kontrolek typu CheckBox w języku VB.NET oraz przekazywania tej tablicy do funkcji zliczającej zaznaczone elementy. Użytkownik przedstawił fragment kodu, w którym zdefiniowano tablicę CheckBoxów, jednak napotkał trudności przy podpinaniu funkcji do zdarzenia kontrolki. Odpowiedzi zawierały poprawki do kodu oraz wyjaśnienia dotyczące przekazywania argumentów w zdarzeniach, konwersji obiektów oraz wykorzystania właściwości Tag do przechowywania referencji do tablicy. Użytkownik zyskał lepsze zrozumienie działania kodu i planuje dalszą naukę programowania w VB.NET.
Wygenerowane przez model językowy.
REKLAMA