Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [Vb.Net] - Eliminare controlli a runtime

    Ciao ragazzi guardate l'ora e mettetevi una mano sulla coscenza!

    Ho un form dove creo a runtime un set di controlli (nella fattispecie sono: label, numUpDown, Combo e Textbox) e li inserisco in un panel.

    I controlli formano delle righe associati a un giorno.
    Es:

    labelGiorno txtOreLavorate cmbSedeAzienda

    ecc ecc

    Quando cambio mensilità dovrebbe rigenerarmi la creazione dei controlli dopo aver eliminato i precedenti...il problema è che alcuni non li elimina...

    per eliminare tutto dal panel uso:

    codice:
            For Each controllo As Control In pannello.Controls
                pannello.Controls.Remove(controllo)
            Next
    ho provato anche con
    codice:
          For Each controllo As Control In pannello.Controls
               controllo.dispose()
            Next
    ma ci son 6/7 controlli che rimangono sempre sempre li stessi)

    E' possibile che il ciclo "salti"? :/ mi pare un po assurda come cosa...
    è abbastanza urgente aiutatemi pliiiiis :°

  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    si è appurato...non so perchè ma mi elimina la meta dei controlli a ogni ciclo :/

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ULtima info (se può essere utile).

    Se tolgo la funzione dispose (vale anche per removeByKey())

    e sostituisco tutto con

    codice:
                MsgBox(controllo.Name)
    Mi visualizza il nome di tutti i controlli senza saltarne manco uno!
    Se invece lascio la msgbox ma aggiungo nel ciclo l'eliminazione (sia con dispose che con removebykey) mi cicla solo la metà :/

    Ho provato anche con un nuovo progetto e fa così li stesso :/

    Vi prego ditemi che c'è una soluzione o sono fritta domani devo consegnare sta cavolo di applicazione e mi mancava solo sta funzione xD

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Fai così

    codice:
            For ix As Integer = pannello.Controls.Count - 1 To 0 Step -1
                pannello.Controls.RemoveAt(ix)
            Next
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grazie 1000 oregon
    funziona
    Ma come mai questo "malfunzionamento"?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non puoi "segare" i rami standoci seduta sopra ...

    Ti siedi sul penultimo e seghi l'ultimo ... ti sposti sul terzultimo e seghi il penultimo ...

    Spero sia chiaro il concetto ... :-)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    mmm si a livello di rami si a livello di ciclo un po meno visto che non mi siedo sul controllo per rimuvere il sottostante ahahah
    Cmq fa nulla l'importante è che funzioni!

    Senti ma sta regola vale anche per la creazione perchè sto incontrando problemi analoghi anche nel creare a runtime ora....

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il senso era che il ciclo foreach esamina un insieme che viene variato durante il ciclo stesso, eliminando gli elementi interni. E' necessario invece eliminare partendo dagli ultimi elementi per conservare l'insieme comunque coerente.

    Per l'inserimento no, non dovresti avere problemi ... ma è tutta un'altra storia eventualmente da raccontare in un altro thread.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Uh si ora ti ho capito! Scusa ieri ero bollita sto lavorando come una matta!

    Si per l'inserimento ho risolto! Era un mio errore di codice! Anche se qui si parla di 450 controlli e l'applicazione si blocca durante i refresh e non riesco a usare i backworker per mettere almeno una progress bar

    Grazie di tutto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.