Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB.Net] Rimuovere controlli creati dinamicamente

    Buongiorno a tutti
    Volevo porvi una domanda.
    Io sto creando dei controlli (combobox) in runtime.
    NewCombobox.DisplayMember = "Nome"
    NewCombobox.ValueMember = "ID"
    NewCombobox.SelectedValue = 0
    NewCombobox.DropDownWidth = 121
    NewCombobox.ItemHeight = 15
    NewCombobox.Size = New Size(181, 21)
    NewCombobox.DataSource = data_autori
    Me.volumi_modifica_autori_ruoli_groupbox.Panel.Con trols.Add(NewCombobox)
    una volta creati questi controlli, ho la necessità di eliminarli.
    Il fatto di renderli invisibili non mi basta, in quanto potrebbero essere riutilizzati con dati aggiornati.

    Per cancellare tali controlli ho trovato il comando me.Controls.Remove
    Però devo fornirgli un valore di tipo Controls, e non di tipo string (come erroneamente pensavo).

    Ho provato a fare un ciclo di tutti i controlli
    codice:
      Public Sub ClearTextBox(ByVal root As Control)
            For Each ctrl As Control In root.Controls
                ClearTextBox(ctrl)
                If TypeOf ctrl Is TextBox Then
                    me.controls.remove(ctrl)
                end if
    
            Next ctrl
    purtroppo però me ne elimina solo alcuni.
    Avete qualche suggerimento?
    grazie!

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non capisco...
    - aggiungi ComboBox
    - elimini TextBox

    qualcosa non torna

  3. #3
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    ammesso che quello che vuoi fare non ha alcun senso.

    Prova a fare un count degli oggetti, del tipo

    codice:
    Dim totaleoggetti as Integer = Me.controls.Count -1
    e poi fai un ciclo for che va da i = 0 to totaleoggetti

    e all'interno ci metti il For Each che utilizzi adesso.



    Aggiungo.

    Questo succede perché tu elimini i controlli mentre li leggi. Se ci fai caso, mettendo 10 bottoni sul form ( o combobox o qualsiasi altro controllo ) ne elimina solo 5 perché il controllo che viene eliminato cede il suo ID al successivo controllo.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il ciclo impostalo da totaleoggetti a 0, decrementando l'indice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    lol! perdonatemi
    ho incollato il pezzo di codice errato
    Creo dei combobox e voglio eliminare il combobox creato una volta che ha esaurito il suo compito.

    provo il suggerimento di Typo.

    Grazie mille ragazzi, domani vi faccio sapere l'esito!

  6. #6
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    ricordati di seguire anche il suggerimento di oregon

    Il ciclo impostalo da totaleoggetti a 0, decrementando l'indice ...

  7. #7
    MsgBox(volumi_modifica_autori_ruoli_groupbox.Contr ols.Count.ToString) possibile che restituisca 1?

    che conti solo il panel come controllo, e non quello che contiene?

  8. #8
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Originariamente inviato da vejita866
    MsgBox(volumi_modifica_autori_ruoli_groupbox.Contr ols.Count.ToString) possibile che restituisca 1?

    che conti solo il panel come controllo, e non quello che contiene?
    Si, perchè ottieni il numero dei controlli del GroupBox e non del Panel...
    Puoi fare in questi modi:


    codice:
            'per nome
            Console.WriteLine(GroupBox1.Controls("panel1").Controls.Count)
            'per numero 
            Console.WriteLine(GroupBox1.Controls(0).Controls.Count)
            'direttamente
            Console.WriteLine(Panel1.Controls.Count)

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.