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 - Proprietà Index con VB2005
Forum - C# / VB.NET - Proprietà Index con VB2005

Avatar
bangirasu (Normal User)
Rookie


Messaggi: 39
Iscritto: 15/08/2007

Segnala al moderatore
Postato alle 14:16
Giovedì, 16/08/2007
Questo topic è stato chiuso dal moderatore

Ciao, sono uno pseudo-programmatore in visual basic 6, non mi ritengo un vero e proprio programmatore piochè un paio di anni fa mi dilettavo a creare qualche programmino in VB6, i programmini più che altro erano stupidi e non facevano quasi niente. Adesso che ho installato visual basic 2005, per provare nuovamente le brezza della programmazione :-), mi ritrovo senza la proprietà Index!!
Adesso che non c'è più come posso creare i miei array di oggetti??
Codice sorgente - presumibilmente VB.NET

  1. Private Sub winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)


prima potevo usare una cosa del genere (vedi sopra), adesso che non c'è più Index come posso fare? devo crearmi winsock1, winsock2, ecc.. e poi per ognuno devo scrivere lo stesso codice??
Codice sorgente - presumibilmente VB.NET

  1. Private Sub winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  2. Private Sub winsock2_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  3. Private Sub winsock3_DataArrival(Index As Integer, ByVal bytesTotal As Long)


Ho letto in giro su internet che è possibile crearli a Run-Time (se sbaglio segnalatemelo) ma creandoli a Run-Time diventa usa cosa lunga e noiosa sopratutto per posizionarli e per impostare le proprietà... nel caso del winsock non è particolarmente importante la posizione ma se volessi mettere dei textbox ognuno naturalmente con una posizione diversa (ma tutti con eventi simili) e con testo diverso già inserito e poi
Codice sorgente - presumibilmente VB.NET

  1. Private Sub TextBoxXXX_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged


bisognerebbe inserire lo stesso pezzo di codice sull evento textchange (per esempio) e su tutti gli altri eventi e sarebbe una cosa molto poco pratica

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:44
Domenica, 19/08/2007
Non ho afferrato bene il problema, mi sembra che ce ne sia più di uno... Vediamo se ho capito ciò che intendi.

1- Hai più controlli e vuoi che abbiano uno stesso evento associato:
Puoi usare la parola chiave Handles per indirizzare ogni evento a un singolo delegato:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Txt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click, TextBox2.Click, TextBox6.Click



2- Vuoi creare array di oggetti, con eventi associati uguali:
Li crei a runtime, come hai detto, con Me.Controls.Add() (vedi il capitolo 53 della guida sul vb.net) e usi la direttiva AddHandler per aggiungere un delegato ad un evento di ogni controllo (vedi il capitolo 41 della guida sul vb.net).

3- Vuoi creare array di textbox con testo diverso e posizione preimpostata:
Fai come sopra, e le aggiungi con un ciclo For. Puoi creare un array di sringhe contenente i vari testi che vuoi siano visualizzati e impostare la proprietà Text di ogni textbox mentre cicli nella struttura iterativa prelevando elementi dell'array col contatore come indice. Per le posizioni puoi modificare TextBox.Location.Y aggiungendo man mano un valore (consiglio 16).

PM
Avatar
bangirasu (Normal User)
Rookie


Messaggi: 39
Iscritto: 15/08/2007

Segnala al moderatore
Postato alle 12:57
Mercoledì, 22/08/2007
Buonissima idea quella dell'Handles!
Creando i textbox a runtime diventa un po' noioso inserire ad ognuno la posizione ad ogni ciclo for.. A me piaceva tanto la proprietà index!!
Grazie mille per l'aiuto!!

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:03
Mercoledì, 22/08/2007
Devi comunque scriverlo una sola volta, guarda:
Codice sorgente - presumibilmente VB.NET

  1. Dim T As TextBox
  2. Dim Y As Int16 = 16
  3. For I As Byte = 0 To 9
  4.   T = New TextBox()
  5.   T.Location = New Point(16, Y)
  6.   Me.Controls.Add(T)
  7.   Y += 16
  8. Next


PM