Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560

    [VB.NET] Eliminare alcuni controlli

    Ciao a tutti,
    creo da codice, all'interno di una DataGridView, alcuni controlli TextBox per visualizzare alcune informazioni... le Textbox vengono visualizzate dopo una certa selezione da parte dell'utente, ogni volta che visualizzo le textbox devo prima cancellare quelle presenti dalla selezione precedente.

    Ovviamente la prima cosa che mi è venuta in mente è fare

    codice:
    DataGridView1.Controls.Clear
    ma poi rendendomi conto che all'interno della DGV c'erano altri controlli come le ScrollBar ho preferito cancellare selettivamente solo le TextBox con un classico ciclio:

    codice:
            For Each Ctrl As Control In DataGridView1.Controls
                If TypeOf Ctrl Is TextBox Then Ctrl.Dispose()
            Next
    OK. Ora questo ciclo mi cancella solo alcune TextBox... ho verificato e questo perchè certe non le esamina proprio, come se non avessero come .Parent la DataGridView e invece ovviamente hanno la prorietà impostata correttamente su DataGridView1.

    Ho provato allora ad usare un ciclo:

    codice:
            For Ctrl As Integer = 0 To DataGridView1.Controls.Count
                If TypeOf DataGridView1.Controls.Item(Ctrl) Is TextBox Then DataGridView1.Controls.Item(Ctrl).Dispose()
            Next
    Questo mi esamina tutti i controlli ma ovviamente ad un certo punto da errore sull'indice Ctrl visto che, dopo aver cancellato alcuni controlli, supera il numero totale DataGridView1.Controls.Count....

    Mi date un consiglio?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Ah sto verificando che anche il DataGridView1.Controls.Clear non mi cancella tutti i controlli!
    Ad esempio ho 4 textbox nella DGV quindi il totale di controlli comprese le due ScrollBar è di 6.

    Eseguo il .Clear e mi ritrovo con 4 controlli. Due textBox sono rimaste.
    Eseguo un altro clear subito dopo e rimangono 3 controlli. E' rimsta solo una texbox.
    Eseguo un altro clear subito dopo e rimangono 2 controlli. Sono arrivato al risultato che volevo...

    Ma non vi sembra un po' assurdo??? :master:

    Grazie!

  3. #3
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    I got the remedy

  4. #4
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Accidenti! Se lo portano (portiamo!!) dietro dal FW 1!!!
    E' la prima volta che mi imbatto in un vero bug del Framework....

    Beh per ora ho fatto un ciclo

    codice:
    Do While DataGridView1.Controls.Count>2
          DataGridView1.Controls.Clear
    Loop
    Vedrò di trovare anche un sistema migliore...

    Ciao e grazie!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da ghini76
    Accidenti! Se lo portano (portiamo!!) dietro dal FW 1!!!
    E' la prima volta che mi imbatto in un vero bug del Framework....
    La libreria Windows Forms è costellata dal bug. Ne ho incontrati almeno altri due, di cui uno permane tutt'oggi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Perchè il "mio" è stato risolto con qualche aggiornamento?

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.