Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Uso degli Index in Vb.net
Forum - C# / VB.NET - Uso degli Index in Vb.net

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 22:48
Giovedì, 08/05/2008
Questo topic è stato chiuso dal moderatore

ho già cercato sul forum ma non mi interessa come gestire gli eventi dei controlli.
Ho la necessita di cambiare ciclicamente delle proprietà di controlli già esistenti da codice.
sto cercando per il web ma non trovo qualcosa ke mi possa aiutare...
chiedo aiuto qui

ciao e grazie!

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:17
Venerdì, 09/05/2008
Non capisco bene la domanda, né la pertinenza del titolo. Cosa intendi con "ciclicamente"?

PM
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 21:37
Venerdì, 09/05/2008
Ho dei controlli su cui devo agire ciclicamente ovvero ho 8 groupbox che devono essere messe enabled a secondadi un numero inserito in una text.
Per fare questo fare un codice con i case o con gli if non finisce più...
Quindi è molto più pratico che a seconda del numero io ciclicamente imposto la proprietà come serve a me.
Ho trovato un codice che lo fà direttamente a tutte:
Codice sorgente - presumibilmente VB.NET

  1. Function GetChildControls(ByVal ctrl As Control) As Control()
  2.         Dim controls As New ArrayList
  3.         For Each c As Control In ctrl.Controls
  4.             ' aggiunge questo controllo e tutti i suoi controlli
  5.             ' annidati
  6.             controls.Add(c)
  7.             controls.AddRange(GetChildControls(c))
  8.         Next
  9.         ' ritorna il risultato sotto forma di array di controlli
  10.         Return DirectCast(controls.ToArray(GetType(Control)), Control())
  11.     End Function


Codice sorgente - presumibilmente VB.NET

  1. For Each c As Control In GetChildControls(Me)
  2.             If TypeOf c Is GroupBox Then c.Text = "Gruppo"
  3.         Next


con i dovuti import
Codice sorgente - presumibilmente C# / VB.NET

  1. Imports System.Collections
  2. Imports System.Windows.Forms


PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:50
Sabato, 10/05/2008
Con ciclicamente avevo inteso a intervalli regolari, evidentemente mi sono sbagliato. Comunque puoi ridurre il codice se vige una certa condizione:
Codice sorgente - presumibilmente VB.NET

  1. For Each C As Control In Me.Controls
  2.   'Se le groupbox non sono nidificate...
  3.   If TypeOf C Is GroupBox Then
  4.     C.Text = "Gruppo"
  5.   End If
  6. Next


Ultima modifica effettuata da Il Totem il 10/05/2008 alle 17:52
PM
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 18:56
Sabato, 10/05/2008
si, però con quel codice come faccio a interagire per esempio con tutte le groupbox tranne una?
è lungo fare una decina di if...

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:37
Domenica, 11/05/2008
Posto che lo dovresti fare con entrami i codici, dipende da cosa vuoi fare. Spesso c'è un modo più veloce, ma dovresti dirmi quale è la condizone che devi esaminare.

PM
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 20:49
Domenica, 11/05/2008
a seconda di un numero inserito dall'utente devo impostare come enabled a seconda del numero una quantità di groupbox.
se l'utente mi inserisci come valore 4 e io ho inserito 8 groupbox le prime 4 hanno come valore enabled true le altre no.
Mi serve questo ma fare una serie di if per una cosa che si può fare con i for non è da bravo programmatore XD

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:03
Lunedì, 12/05/2008
In questo caso è semplice. Numera le groupbox con un indice: GroupBox1, GroupBox2, eccetera... Dopo aver letto il numero, cicli sui controlli ed agisci in questo modo:
Codice sorgente - presumibilmente VB.NET

  1. 'Questo le leggi come input dall'utente
  2. Dim Index As Int32
  3. Dim N As Int32
  4. '...
  5. For Each C As Control In Me.Controls
  6.   If TypeOf C Is GroupBox Then
  7.     N = CInt(C.Name.Remove(0, "GroupBox".Length))
  8.     C.Enabled = (N <= Index)
  9.   End If
  10. Next


In pratica dividi il nome del controllo ottenendone l'indice come numero e lo confronti con quello immesso dall'utente: se è minore o uguale, attivi la groupbox, altrimenti la disattivi. Funziona anche meglio se l'indice lo metti nella proprietà Tag del controllo.

PM
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 16:46
Martedì, 13/05/2008
Non male come codice però ho trovato una soluzione semplice con indice.
Ci sto lavorando e penso che come ho finito uppo il sorgente con esempi con la maggior parte dei controlli.
Grazie totem

PM
Pagine: [ 1 2 ] Precedente | Prossimo