Oppure

Loading
18/08/09 18:02
xeeynamo
Salve :)
Stò creando un piccolo programmino e mi sono fermato su una cosa che potrei tranquillamente aggirare, ma che mi farebbe perdere tempo e spazo nel codice.
Allora, ho diverse picturebox (64 per la precisione) create grazie ad un semplice ciclo for che le alloca nella finestra e ci setta un'immagine dentro. Ora il mio problema però stà nella gestione degli eventi! Teoricamente dovrei fare ben 64 eventi e quindi 64 funzioni però dato che gli eventi avranno un contenuto quasi del tutto uguale, non ne vale la pena appesantire l'applicazione e il sorgente.
La prima cosa che mi è venuta in mente è stata una cosa che sicuramente non sarebbe funzionata, ma la posto ugualmente per farvi rendere conto di cosa stò parlando e di cosa ho bisogno:
...
for(int i=0;i<0x40;i++)
    sprite[i].Click += new System.EventHandler(this.Test(i));
...


public static void Test(int n){
    sprite[i] // e qui ci metterò l'operazione da fare
}



Come risolvere? :)
aaa
18/08/09 19:52
manvb.net
Postato originariamente da xeeynamo:
...
for(int i=0;i<0x40;i++)
    sprite[i].Click += new System.EventHandler(this.Test(i));
...


public static void Test(int n){
    sprite[i] // e qui ci metterò l'operazione da fare
}



Come risolvere? :)


Modifica così:
...
for(int i=0;i<0x40;i++)
    sprite[i].Click += new System.EventHandler(this.Test);
...


public static void Test(object sender, EventArgs e){
    PictureBox sprite = (PictureBox)sender;
    //e con sprite ci fai quello che vuoi
}
aaa
18/08/09 20:21
xeeynamo
Postato originariamente da manvb.net:

Modifica così:
...
for(int i=0;i<0x40;i++)
    sprite[i].Click += new System.EventHandler(this.Test);
...


public static void Test(object sender, EventArgs e){
    PictureBox sprite = (PictureBox)sender;
    //e con sprite ci fai quello che vuoi
}


perfetto, ho preso spunto dal codice sorgente e ho fatto una cosa così:
...
for(int i=0;i<0x40;i++){
    sprite[i].Click += new System.EventHandler(this.Test);
    sprite[i].Name = i.ToString();
}
...


public static void Test(object sender, EventArgs e){
    PictureBox sprite = (PictureBox)sender;
    sprite[Int32.Parse(p.Name)] // E ci faccio quello che voglio :D
}


E ovviamente la funzione mi riconosce quale delle 64 picturebox ho selezionato!

Grazie :k:
Ultima modifica effettuata da xeeynamo 18/08/09 20:22
aaa
18/08/09 20:23
manvb.net
Di niente! :k:
aaa