|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 71
|
[VB.NET] Evento da codice ( RaiseEvent? )
Salve a tutti, vorrei sapere come fare in Visual Basic per "attivare" un evento da codice. Come quando si va sul form, eventi, e si fa doppio click sull'evento DragDrop ad esempio...
Posso farlo in questo modo manualmente certo, ma su 12 picturebox con 2 eventi ciascuna, se poi devo modificare qualcosa non vorrei rifare tutto Provando ad attivare l'evento manualmente non riesco e mi chiede di usare "RaiseEvent". Sono andato nella documentazione, e ho provato un po' a lavorarci su, ma non è uscito niente di concreto ![]() Sapete dirmi come fare per attivarli da codice ? Grazie in anticipo
__________________
CPU: 3570K - MB: ASRock Z77 Pro4-M VGA: GTX 660 |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
RaiseEvent c'entra poco o nulla con questo, nel senso che il suo uso tipico è appunto quello di scatenare un evento "personalizzato" dichiarato in una propria classe... Puoi fare molto di più con AddHandler . L'esempio classico della pulsantiera : ho una Form con 100 pulsanti ( classe Button ). Come gestire il Click su TUTTI i pulsanti con 4 righe di codice ? Codice:
Public Class Form1
Private Sub AlClickSuiPulsanti(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim B As Button = CType(sender, Button)
MsgBox("Hai fatto Click su " & B.Name)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each B As Button In Me.Controls
AddHandler B.Click, AddressOf AlClickSuiPulsanti
Next
End Sub
End Class
|
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 71
|
prima di tutto grazie per la risposta
rileggendo un po' quello che ho scritto forse non sono stato molto chiaro ...In pratica devo gestire il dragDrop sulle picturebox, clicco su una picturebox e trascino il "contenuto" su una picturebox vuota che la userà come immagine. (6 picturebox con immagini e 6 vuote) Dovrei attivare l'evento "mousedown" e "mousemove" per le picturebox con l'immagine da trascinare, e attivare "dragdrop" e "dragenter" su quelle vuote che 'riceveranno' l'immagine. Invece che andare nel 'Design' del form, cliccare su 'eventi' e fare doppio click su "mousedown", "mousemove" ecc.. volevo farlo da codice. Come dire "picturebox1.dragdrop.enabled=true" e "picturebox1.dragenter.enabled=true" tanto per fare un esempio inesistente Ho provato comunque a modificare il codice che hai postato ma così avrei altri problemi che non so come risolvere... ( del tipo che mi considera anche tutte le picturebox dell'altro form che metto invisibile, e da un'eccezione il codice che ho provato a mettere è questo Codice:
private sub baidragdrop(ByVal sender As System.Object, ByVal e As DragEventArgs)
Dim A As PictureBox = CType(sender,PictureBox)
A.Image = e.Data.GetData(DataFormats.Bitmap)
end sub
private sub baidragenter(ByVal sender As System.Object, ByVal e As DragEventArgs)
Dim B As PictureBox = CType(sender,PictureBox)
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
end sub
Codice:
For Each A As PictureBox In Me.Controls AddHandler A.DragDrop, AddressOf baidragdrop Next For Each B As PictureBox In Me.Controls AddHandler B.DragEnter, AddressOf baidragenter Next
__________________
CPU: 3570K - MB: ASRock Z77 Pro4-M VGA: GTX 660 Ultima modifica di ZJack : 29-08-2009 alle 14:42. Motivo: aggiunta dettagli |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Semplicemente andrai a condizionare il comportamento degli handler a seconda del "tipo" di picturebox. Come ? Ad esempio impostando in modo opportuno la proprietà "Tag" ( che praticamente tutti i Controls hanno ), e interrogandola via codice, in modo tale che solo sulle box di tipo "drag" sarà possibile prendere le immagini, mentre sarà possibile incollarle solo sulle box di tipo "drop". Su tutte le altre box eventualmente presenti ( Tag = "" ) il drag/drop non sarà disponibile...
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 71
|
ti ringrazio per la pazienza, ho provato a fare dei tentativi ma dava sempre quell'errore. Così preso da un attacco di "felicità" ho attivato tutti gli eventi dal 'Design' .
Ora però ho un altro problema ... se puoi rispondermi bene, altrimenti aprirò un altro topic. Mi serve sapere il nome dell'immagine in una pictureBox, tipo un "picturebox1.image.getPath()" solo che mi pare di aver letto che non si può fare niente di simile --------------- Ok, mentre stavo scrivendo m'è venuta l'illuminazione devo confrontare l'immagine di due picturebox per verificare che siano uguali, poco fa ho scoperto per sbaglio il .getHashCode e ho cercato cos'era. Dopo di che mi è uscito questo: Codice:
If (picturebox7.image.gethashcode = picturebox1.image.GetHashCode) Then
msgbox ("e")
Else [...]
grazie ancora
__________________
CPU: 3570K - MB: ASRock Z77 Pro4-M VGA: GTX 660 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:33.













( del tipo che mi considera anche tutte le picturebox dell'altro form che metto invisibile, e da un'eccezione








