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 - [VB.NET] Eventi di oggetti creati in runtime 2
Forum - C# / VB.NET - [VB.NET] Eventi di oggetti creati in runtime 2

Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 9:51
Lunedì, 27/12/2010
Dato che è stato chiuso il topic precedente (non riesco a capire il motivo, forse perché non ho scritto per tre giorni, ma ero a divertirmi per natale), ne apro un altro. Il codice che mi ha gentilmente postato dedalux funziona, ma a metà.

Codice sorgente - presumibilmente VB.NET

  1. Public Sub linkbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'NOTA CHE QUA HO TOLTO L'HANDLES CHE NON SERVE
  2.         MsgBox(sender.Text.Remove(0, 10))
  3.     End Sub
  4.  
  5.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.         Dim Directories() As String = IO.Directory.GetDirectories("F:\report")
  7.         Dim I As Integer
  8.         For Each Dir As String In Directories
  9.             Dim LinkButton As New Button
  10.             AddHandler LinkButton.Click, AddressOf linkbutton_Click
  11.             'Qua ho tolto l'assegnazione del nome, che secondo me non serve, dato che creando i controlli tutti con lo stesso nome, ad ognuno verrà assegnato un nome comunque diverso, e non potresti raggiungerlo (per quello che so, poi correggetemi se sbaglio)
  12.             LinkButton.Text = Directories(I).Remove(0, 10)
  13.             LinkButton.Height = 25
  14.             LinkButton.Width = 170
  15.             LinkButton.Location = New Point(0, I * 25 + 5)
  16.             Me.Controls.Add(LinkButton)
  17.             I = I + 1
  18.         Next
  19.     End Sub



Finalmente l'evento parte. Solamente che non riesco a fargli riconoscere il pulsante che viene premuto. Quando clicko su uno dei pulsanti mi ritorna (ovviamente direi) un eccezione (Riferimento a un oggetto non impostato su un'istanza di oggetto). Come faccio a passargli dei parametri a seconda del pulsante clickato?

PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 14:10
Lunedì, 27/12/2010
Non sono sicuro di aver capito, ma se vuoi accedere alle proprietà dell'oggetto di tipo Button che ha generato l'evento, puoi fare:

CType(sender, Button).[Proprietà] ....

=)

PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 12:03
Lunedì, 27/12/2010
Siccome il codice te l'ho passato io, mi sento in dovere di darti qualche aiuto in più, però non vorrei darti la pappa pronta, e dato che la situazione non è complicata, preferisco indirizzarti:
se ci pensi, il controllo che genera l'evento, che è un controllo Button, non ha la proprietà "Text" a cui stai tentando di accedere...

EDIT: ho ricontrollato il codice che avevo postato, la svista è stata mia, chiedo venia, comunque puoi riuscire benissimo a correggere :k:

Ultima modifica effettuata da dedalux il 27/12/2010 alle 12:06
PM
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 12:48
Lunedì, 27/12/2010
Alla proprietà text ho risolto con un sotterfugio di bassissima lega:

Codice sorgente - presumibilmente Plain Text

  1. sender.ToString.Remove(0, 35)



Soltanto che non riesco bene a capire come accedere alle altre proprietà (soprattutto le location). In effetti viene scaturito un evento linkbutton_click (che poteva anche chiamarsi "Pippo") senza l'handles. Deduco che la soluzione di nel sender, ma non riesco a capire dove.

Ultima modifica effettuata da Iohoilpotere il 27/12/2010 alle 12:48
PM