Thejuster (Admin)
Guru^2
Messaggi: 2318
Iscritto: 04/05/2008
|
Ciao totem.
Conosci per caso il medoto di aggiungere un haldes ad un nuovo controllo ed assegnarli un azione?
spiego cosa voglio fare.
l'utente puo in un secondo momento aggiungere nuove picturebox
Codice sorgente - presumibilmente C# / VB.NET |
dim pic as new picturebox
me.Controls.add(pic)
pic.name = "picturebox" & id & ""
|
facendo cosė implemento un nuovo controllo
e lo faccio stampare nel form
ma adesso come gli assegno nuove funzioni a quel controllo?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
http://totem.altervista.org/guida/versione2/B19.php
In C# la sintassi č:
Codice sorgente - presumibilmente C# / VB.NET |
[Controllo].[Evento] += new [Delegate]([Sottoscrittore])
|
Ad esempio, per il click č:
Codice sorgente - presumibilmente C++ |
private void unClick(Object sender, EventArgs e) { } //... Button B = new Button(); B.Click += new EventHandler(unClick);
|
La sfortuna di C# č che devi anche conoscere il delegate corretto.
P.S.: perchč l'ho scritto in C#? Boh, forse avevo letto Luk3 nello starter della discussione... Comunque c'č scritto tutto nel link. Ultima modifica effettuata da Il Totem il 12/09/2008 alle 13:48 |
|
Thejuster (Admin)
Guru^2
Messaggi: 2318
Iscritto: 04/05/2008
|
Ciao totem si funziona correttamente ma non proprio spiego ho bisogno di generare una griglia di pictureBox
allora uso questo medoto
Codice sorgente - presumibilmente VB.NET |
'imposto le variabili Dim x As Integer = 10 Dim y As Integer = 10 Dim w As Integer = 32 Dim h As Integer = 32 Dim i As Integer = 0 Dim id As Integer = 0 Dim situazione As Integer = 32 'inizio un conteggio 'portando X a 0 For i = 0 To x - 1 id += 1 Dim pic As New PictureBox With pic .Size = New Size(32, 32) .Name = "pic" & id .Location = New Point(situazione + 32, 32 + 32) .BorderStyle = Windows.Forms.BorderStyle.FixedSingle Me.Controls.Add(pic) AddHandler .Click, AddressOf clicc situazione += 32 End With Next
|
mi va a genere solo 10 picuture box in orizzontale
mentre a me servirebbe una griglia completa
10 x 10 picturebox
come posso fare a fargli fare generare una griglia perfetta?
serve un'altro calcolo suppongo
potresti illuminarmi?
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2318
Iscritto: 04/05/2008
|
Ciao totem il codice sopra elencato funziona
ho riuscito a generare una griglia di picturebox dinamicamente
ora ho un grande problema
quello di assengare alla picturebox clicca un immagine
se puoi aiutami su questo passo
dunque genero la picture box
Codice sorgente - presumibilmente VB.NET |
dim pic as new picturebox pic.name = "a" & id Me.Controls.add(pic) AddHandler .Click, AddressOf picClick
|
Ora vado a recuperare il nome del sender
Codice sorgente - presumibilmente VB.NET |
Private Sub picClick(ByVal Senders As Object, ByVal e As EventArgs) Dim _tag As Object = CType(Senders, PictureBox).Name
|
Ho impegato circa un ora per capire come riuscire ad ottenere il nome del senders
Ora come cavolo faccio ad applicare un immagine su quella picturebox?
essendo un controllo generato dinamicamente
non posso avere accesso cosė liberamente con gl'altri controlli
deve pur esserci un sistema
potresti aiutarmi caro totem?
mi sto scervellando da matti
grazie mille.
Ho provato anche queste funzioni ma non sembrano dare risultato
Codice sorgente - presumibilmente VB.NET |
Private Sub clicc(ByVal Senders As Object, ByVal e As EventArgs) Dim _tag As Object = CType(Senders, PictureBox).Tag If _tag IsNot Nothing Then Dim _c As Control = FindControl(Me, GetType(PictureBox), _tag) If _c IsNot Nothing Then CType(_c, PictureBox).Image = Image.FromFile(texture) End If
|
Funzione
Codice sorgente - presumibilmente VB.NET |
Private Function FindControl(ByVal start As Control, ByVal type As Type, ByVal tag As Object) As Control For Each _c As Control In start.Controls If _c.GetType() Is type Then If _c.Tag IsNot Nothing AndAlso _c.Tag = tag Then Return _c Else If _c.HasChildren Then Dim _cc As Control = FindControl(_c, type, tag) If _cc IsNot Nothing Then Return _cc End If End If Next Return Nothing End Function
|
Ultima modifica effettuata da Thejuster il 14/09/2008 alle 1:40
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2318
Iscritto: 04/05/2008
|
Risolto
Codice sorgente - presumibilmente VB.NET |
Dim lols = CType(Senders, PictureBox).Name For Each l As Control In Me.Controls If l.Name = lols Then l.BackgroundImage = Image.FromFile(texture) End If Next
|
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Scusa ma a me sembra che tu ti stia scervellando per niente quando hai la soluzione sotto il naso:
Codice sorgente - presumibilmente Plain Text |
CType(sender, PictureBox).BackgroundImage = Image.FromFile("file")
|
|
|