Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1

    [VB.NET] Gestire molte label (o altro)?

    Vorrei sapere un modo per gestire molte label (o picturebox) in un form. Nel senso: se avessi una ventina di label, e dovessi cambiare il testo ad ogni singola label, dovrei per forza scrivere il codice per ogni singola label?
    codice:
    Label1.Text = "Testo"
    Label2.Text = "Testo"
    . . .
    Oppure c'è un modo per "scorrere" automaticamente le varie label?

  2. #2
    potresti ciclare su tutte le Label.
    una cosa del genere magari (non testato):
    codice:
    foreach (Control c in this.Controls)
    {
        if (c.GetType() == typeof(Label))
            c.Text = "TESTO";
    }

  3. #3
    Se cerchi nel forum si è parlato tante volte di come creare/accedere dinamicamente a dei controlli, nel tuo caso probabilmente la cosa più sensata sarebbe creare un array di label.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Proverò entrambe le soluzioni e vi farò sapere, grazie!

  5. #5
    Ho risolto così:
    codice:
    For i = 1 To N             
         For Each C As Control In Me.Controls.OfType(Of Label)()
                    If C.Name = "Label" & i Then
                        . . .
                    End If 
          Next
    Next
    PS: in Visual Basic

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da SorinMarkov Visualizza il messaggio
    Ho risolto così:
    codice:
    For i = 1 To N             
         For Each C As Control In Me.Controls.OfType(Of Label)()
                    If C.Name = "Label" & i Then
                        . . .
                    End If 
          Next
    Next
    PS: in Visual Basic
    Al posto di fare 2 cicli annidati non ti conviene confrontare la prima parte con Label e per la seconda convertirla il numero e controllare sia compresa nell'intervallo?

    In ogni caso sembrerebbe più mantenibile la soluzione proposta da MItaly...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Al posto di fare 2 cicli annidati non ti conviene confrontare la prima parte con Label e per la seconda convertirla il numero e controllare sia compresa nell'intervallo?
    Non ho capito cosa vuoi dire

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    "Label12"
    "Label" = "Label"
    0 < Numero("12") < N


    Non so se così mi spiego meglio...
    Mi dispiace: Scriverei anche il codice VB se lo conoscessi, ma non è così ._.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    "Label12"
    "Label" = "Label"
    0 < Numero("12") < N
    Non credo si possa fare, al massimo si può levare il for esterno, però in questo modo le istruzioni vengono eseguite su tutte le label presenti nel form

  10. #10
    @SorinMarkov: sostanzialmente hai implementato una versione ancora più inefficiente (O(n^2)) dell'antipattern for-if. Leggi da qui in poi.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.