Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Aggiungere Componente con relativo Handles
Forum - C# / VB.NET - Aggiungere Componente con relativo Handles

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2020
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:10
Venerdì, 12/09/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

  1. dim pic as new picturebox
  2.  
  3. me.Controls.add(pic)
  4. 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?


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:47
Venerdì, 12/09/2008
http://totem.altervista.org/guida/versione2/B19.php
In C# la sintassi è:
Codice sorgente - presumibilmente C# / VB.NET

  1. [Controllo].[Evento] += new [Delegate]([Sottoscrittore])


Ad esempio, per il click è:
Codice sorgente - presumibilmente C++

  1. private void unClick(Object sender, EventArgs e)
  2. {
  3. }
  4.  
  5. //...
  6. Button B = new Button();
  7. 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
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2020
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:15
Sabato, 13/09/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

  1. 'imposto le variabili
  2.         Dim x As Integer = 10
  3.         Dim y As Integer = 10
  4.  
  5.         Dim w As Integer = 32
  6.         Dim h As Integer = 32
  7.  
  8.         Dim i As Integer = 0
  9.         Dim id As Integer = 0
  10.  
  11.         Dim situazione As Integer = 32
  12.  
  13.         'inizio un conteggio
  14.         'portando X a 0
  15.         For i = 0 To x - 1
  16.             id += 1
  17.  
  18.             Dim pic As New PictureBox
  19.  
  20.             With pic
  21.                 .Size = New Size(32, 32)
  22.                 .Name = "pic" & id
  23.                 .Location = New Point(situazione + 32, 32 + 32)
  24.                 .BorderStyle = Windows.Forms.BorderStyle.FixedSingle
  25.                 Me.Controls.Add(pic)
  26.                 AddHandler .Click, AddressOf clicc
  27.                 situazione += 32
  28.            End With
  29.         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?


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2020
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:33
Sabato, 13/09/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

  1. dim pic as new picturebox
  2.  
  3. pic.name = "a" & id
  4.  
  5. Me.Controls.add(pic)
  6.  
  7. AddHandler .Click, AddressOf picClick





Ora vado a recuperare il nome del sender



Codice sorgente - presumibilmente VB.NET

  1. Private Sub picClick(ByVal Senders As Object, ByVal e As EventArgs)
  2.  
  3.  
  4. 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

  1. Private Sub clicc(ByVal Senders As Object, ByVal e As EventArgs)
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. Dim _tag As Object = CType(Senders, PictureBox).Tag
  9.  
  10.  
  11.         If _tag IsNot Nothing Then
  12.             Dim _c As Control = FindControl(Me, GetType(PictureBox), _tag)
  13.  
  14.             If _c IsNot Nothing Then CType(_c, PictureBox).Image = Image.FromFile(texture)
  15.  
  16.  
  17.         End If



Funzione

Codice sorgente - presumibilmente VB.NET

  1. Private Function FindControl(ByVal start As Control, ByVal type As Type, ByVal tag As Object) As Control
  2.  
  3.         For Each _c As Control In start.Controls
  4.             If _c.GetType() Is type Then
  5.                 If _c.Tag IsNot Nothing AndAlso _c.Tag = tag Then Return _c
  6.             Else
  7.                 If _c.HasChildren Then
  8.                     Dim _cc As Control = FindControl(_c, type, tag)
  9.                     If _cc IsNot Nothing Then Return _cc
  10.                 End If
  11.             End If
  12.         Next
  13.  
  14.         Return Nothing
  15.  
  16.     End Function




:(

Ultima modifica effettuata da Thejuster il 14/09/2008 alle 1:40


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2020
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 1:52
Domenica, 14/09/2008
Risolto

8-|

Codice sorgente - presumibilmente VB.NET

  1. Dim lols = CType(Senders, PictureBox).Name
  2.  
  3.  
  4.  
  5.         For Each l As Control In Me.Controls
  6.             If l.Name = lols Then
  7.  
  8.                 l.BackgroundImage = Image.FromFile(texture)
  9.  
  10.             End If
  11.  
  12.  
  13.  
  14.         Next




PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:29
Domenica, 14/09/2008
Scusa ma a me sembra che tu ti stia scervellando per niente quando hai la soluzione sotto il naso:
Codice sorgente - presumibilmente Plain Text

  1. CType(sender, PictureBox).BackgroundImage = Image.FromFile("file")


PM Quote