Ovviamente dipende da cosa si vuole fare…! Certo che hai abboccato come un “Pes gat” ;-)
La classe è un oggetto dotabile di Proprietà/Eventi/Metodi, se crei una Collection e ci metti dentro i Controlli, poi devi ciclare la collection…
Se devi creare 2 Blocchi per “XX” e “YY” devi creare 2 collection, se la proprietà da gestire è solo Locked direi si ragiona in un modo se le proprietà da usare sono N, si deve ragionare diversamente… per non dover riscrivere N volte lo stesso codice di ciclo…!
Scrivere sempre lo stesso codice allunga le righe, per nulla, perchè alla fine fa sempre la stessa cosa su oggetti diversi… tanto vale creare un oggetto dedicato che fa tutto.
Quindi si crea una Classe(Cn) alla quale si associa un Controllo e si definiscono le Proprietà/Medoti/Eventi Public, si crea una Classe(CMaster) che si occupa di Istanziare/Gestire la Collection ed ii Metodi/Proprietà per gli eventi serve un rilancio dalle classi Controllo.
A questo punto ogni istanza CMaster può gestire un TAG, quindi se hai 2 TAG ovvero “XX” e “YY” avrai 2 Istanze CMaster, ogni istanza CMaster esporrà la proprietù Locked e ti basta modificarla per renderla applicata alle Classi che associano i controlli di conseguenza ai controlli stessi.
Se le proprietà su cui interagire sono varie… per te dalla Maschera il codice sarà molto Pulito perchè avrai CMaster1.Loaked=False e CMaster2.ForeColor=vbRed ecc…
La classe Master si occupa di gestire Add/Remove/Exists/Move degli elementi della Collection.
Se poi si vuole dare Gerarchia agli Oggetti allora la cosa si complica un po ma è come il Domino, se le costruisci bene… il codice diventa pulito funzionale, ottimizzato nel senso che scrivi codic “specializzato”…