Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Array di PictureBox
sabato 13 ottobre 2007 - 08.32
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
id86
Profilo
| Newbie
5
messaggi | Data Invio:
sab 13 ott 2007 - 08:32
Salve ragazzi, questo è il mio primo post sul forum!
Ho da pochissimo iniziato ad usare il framework .net e mi sono imbattuto in un problema. Devo creare un programma in c# che si basa sulla presenza di tante (poco più di un centinaio) piccole PictureBox. Ogni volta che l'utente preme su una di essa viene richiamata una funzione che algoritmicamente sceglie un'altra PictureBox che inizierà a lampeggiare.
Io pensavo fosse veramente semplice, ma quando ho cercato di far sì che le PictureBox aggiunte al mio Form fossero elementi di un array, impostando per esempio il Name pari a PictureBox[1], ho ricevuto un errore del tipo "Property value is not valid". Spulciando sulla rete ho visto che è possibile ovviare a questo problema creando i componenti usando esclusivamente il codice.. ma dato che le mie PictureBox dovranno assumere delle posizioni in base a uno sfondo che non ha regolarità geometrica e che metterò sotto, per me sarebbe veramente complicato definirne la posizione di tutte quante senza poterle visualizzare nel tab Design!
Come potrei fare?
Grazie anticipatamente!
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
sab 13 ott 2007 - 08:47
le raggruppi tutte all'interno di un panel.. in modo che panel.Controls contenga solo le tue picturebox.
id86
Profilo
| Newbie
5
messaggi | Data Invio:
sab 13 ott 2007 - 09:00
Probabilmente l'ansia di essere sintetico non mi ha fatto esprimere il problema in modo chiaro!
Supponiamo io clikki sulla PictureBox numero 5: si attiverà una funzione che, in base al valore 5, mi elaborerà per esempio il numero 12. Ora voglio che la PictureBox 12 vari alcune sue proprietà (per esempio divenga invisibile).
Come posso fare l'accesso diretto alla proprietà della picturebox 12?
E' possibile farlo tramite qualche operazione particolare sui Panel, seguendo il tuo consiglio?
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
lun 22 ott 2007 - 20:27
Supponendo che tutti i duoi picture box siano figli di un pannello che si chiama "panel"
aggiungi lo stesso handler di eventi a tutti i picture box
foreach(Control c in panel.Controls)
{
PictureBox pb = c as PictureBox;
if( pb != null )
pb.Click += PictureBox_Click;
}
L'handler lo implementi cosi
void PictureBox_Click(object sender, EventArgs e)
{
int index = panel.IndexOf( (PictureBox) sender );
index += 1;
// in questo modo il primo picture box darà index = 1, il secondo 2 e così via..
// .. poi qui fai quello che devi fare con index
// per accedere ad un altro picture box (es: 12)
PictureBox tmp = panel.Controls[11]; -- 0 based
}
Ovviamente il codice suppone che come figli del panel (o di qualsiasi containercontrol tu voglia) siano esclusivamente i tuoi picture box
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !