Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Uso di AddHandler/AddressOf e passaggio di parametri

    Salve, programmo in Vb, Visual studio 2010.

    Nel mio form carico una serie di immagini in un oggetto Flow Layout Panel.
    Al click delle immagini carico un oggetto PisctureBox che mostra l'immagine cliccata.

    Ho un problema, al click dell'immagine avrei necessità di trasferire il parametro contenente la sua posizione all'interno del Flow Layout Panel.

    Vi posto il codice

    Protected Sub CaricaGallery()
    OpenFileDialog1.FileName = ""
    OpenFileDialog1.Filter = "Immagini Jpeg, Gif, Bmp|*.jpg;*.gif;*.bmp|Tutti i file|*.*"
    OpenFileDialog1.ShowDialog()
    If OpenFileDialog1.FileName = "" Then Exit Sub
    Dim I As Integer = 0
    For Each file As String In OpenFileDialog1.FileNames
    Dim pic As New PictureBox
    pic.SizeMode = PictureBoxSizeMode.StretchImage
    pic.ImageLocation = file
    pic.Parent = FLPImage
    pic.ClientSize = New Size(92, 60)
    I += 1
    pic.Name = "NomeImage" & I
    pic.Tag = I
    AddHandler pic.Click, AddressOf Pic_Click
    pic.Show()
    Next
    End Sub


    Private Sub Pic_Click(sender As System.Object, e As System.EventArgs)
    PicImgG.Image = sender.image
    PicImgG.Tag = 0
    End Sub
    Il problema è che alla riga di codice "AddHandler pic.Click, AddressOf Pic_Click", dovrei teoricamente passare il parametro I, contenento la posizione dell'immagine. Questo mi permetterebbe di assegnarla al
    "PicImgG.Tag" ...

    Spero di essere stato chiaro, resto a disposizione per ulteriori informazioni.
    Grazie in anticipo.

  2. #2
    Non so se ho capito,
    ma non puoi prendere il tag del sender dopo averlo castato?

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,768
    Quote Originariamente inviata da Dario the best Visualizza il messaggio
    Il problema è che alla riga di codice "AddHandler pic.Click, AddressOf Pic_Click", dovrei teoricamente passare il parametro I, contenento la posizione dell'immagine. Questo mi permetterebbe di assegnarla al
    "PicImgG.Tag" ...
    L'uso di AddHandler serve a definire un metodo che gestisca un evento, passando l'indirizzo del metodo stesso con AddressOf, ma non puoi modificare gli argomenti dell'evento.

    Quando si verifica la condizione che porta all'evento specifico, se è stato specificato un gestore, l'implementazione del componente o del controllo chiama il metodo ma i parametri che vengono passati sono quelli stabiliti a posteriori e determinati dalla tipologia del delegato a cui fa capo il metodo: non puoi aggiungere e/o togliere argomenti, poiché il codice del componente/controllo non può sapere a priori che informazioni ti possono interessare.

    Il massimo che puoi fare è risalire al controllo che ha generato l'evento e alle sue proprietà: se ti occorre associare informazioni aggiuntive, puoi farlo in un dizionario esterno, o usando la proprietà Tag, oppure indicandole nel nome.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.