2016-08-02 1 views
0

Я добавляю изображения в картинке на панель потока. Я пытаюсь добавить событие щелчка, чтобы при щелчке изображения на панели flowlayout он откроет исходное изображение. Мои фотографии .jpg. Вот что я получил до сих пор, но похоже, что он не работает.Добавить событие щелчка, чтобы открыть изображение с отдельного изображения

For Each pic As FileInfo In New DirectoryInfo("picturepath").GetFiles("file.jpg") 
    Dim picture As New PictureBox 
    picture .Height = 113 
    picture .Width = 145 
    picture .BorderStyle = BorderStyle.Fixed3D 
    picture .SizeMode = PictureBoxSizeMode.Zoom 
    picture .Image = Image.FromFile(fi.FullName) 

    AddHandler picture.MouseClick, AddressOf pictureBox_MouseClick 
    flowlayoutpanel.Controls.Add(picture) 
Next 

Public Sub pictureBox_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 
    ====>>> Not sure what goes here to get the correct path of that image since there could be more than one images. 
End Sub 
+0

Вы можете добавить свой 'picturePreview_MouseClick' функцию – jonju

+0

@jonju минор текстовая ошибка. –

+0

Сначала вам нужно сохранить имя/путь исходного файла ('fi.FullName'), чтобы потом получить доступ к нему. Путь к файлу не закодирован в изображение – Plutonix

ответ

0

Вы должны использовать параметр «отправителя», чтобы получить ссылку на PictureBox, что кликнули:

Public Sub pictureBox_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 
    Dim pb As PictureBox = DirectCast(sender, PictureBox) 
    ' ... now do something with "pb" (and/or "pb.Image") ... 
End Sub 

со ссылкой только PictureBox (как в моем примере выше), вы будет иметь только ссылку на изображение. Если вы хотите полный путь к файлу, вам нужно будет каким-то образом сохранить эту информацию с PictureBox; используя свойство Tag один простой способ:

Dim picture As New PictureBox 
... 
picture.Image = Image.FromFile(fi.FullName) 
picture.Tag = fi.Fullname 

Теперь вы можете получить это имя файла в случае щелчка и сделать что-то с ним:

Public Sub pictureBox_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 
    Dim pb As PictureBox = DirectCast(sender, PictureBox) 

    ' ... now do something with "pb" (and/or "pb.Image") ... 
    Dim fileName As String = pb.Tag.ToString() 
    Process.Start(fileName) 
End Sub 
+0

, если я использую process.start, какими будут использовать фотографии по умолчанию для Windows? –

+0

что вы пытаетесь достичь с этим? – jonju

+0

просто откройте изображение при нажатии. –

Смежные вопросы