Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  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
    @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.

  10. #10
    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

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.