2015-01-15 6 views
1

У меня есть 4 ящика для изображений на моей форме. Всякий раз, когда выбирается новое изображение, появляется следующее доступное поле, и в этом окне изображения создается кнопка. Я хотел бы, чтобы эта кнопка была в состоянии удалить изображение внутри этого конкретного окна. Я знаю, как создать обработчик событий, а затем добавить адрес к кнопке, то, что я не знаю, как это сделать, - это как написать код, чтобы фактически удалить назначенное изображение в назначенном поле. Вот мой код, чтобы загрузить фотографии и создать кнопку:Добавить событие к динамически созданной кнопке

Private Sub btnAddImage_Click(sender As Object, e As EventArgs) Handles btnAddImage.Click, btnUploadImage.Click 4 

     Dim btn As Button = New Button 
     btn.Text = "Remove Image" 


     'Procedure places the pictures in each empty picturebox in sequence 
     ofdBrowsePictures.Multiselect = False 
     ofdBrowsePictures.Title = "Select Image to Upload" 
     ofdBrowsePictures.Filter = "Image Files |*.jpg*" 

     If ofdBrowsePictures.ShowDialog() = Windows.Forms.DialogResult.OK Then 

      'create array of each picture box and check if they are empty 
      'Check if the picturebox contains a tag with the image path 
      Dim PBs() As PictureBox = {picMainImage, picImage2, picImage3, picImage4} 
      Dim nextPB = PBs.Where(Function(x) IsNothing(x.Image)).FirstOrDefault 

      If Not IsNothing(nextPB) Then 

       'if the box does not contain a image path, then place the picture on that box 
       nextPB.ImageLocation = ofdBrowsePictures.FileName 
       nextPB.Tag = nextPB.ImageLocation.ToString 

       'add a button 
       nextPB.Controls.Add(btn) 

       'Create a border style on the image 
       nextPB.BorderStyle = BorderStyle.FixedSingle 

      End If 
     End If 
End Sub 
+0

Задайте местоположение на кнопке Button, как вы делали для 'nextPB', а затем' File.Delete (buttonFromClickEvent.Tag) '. Возможно, я не понял точно, о чем вы просили, хотя ... – TyCobb

+0

У вас одновременно отображается несколько кнопок? У вас есть одна кнопка (созданная на форме, как обычно), которую вы динамически перемещаете/показываете/скрываете по мере необходимости? Это может быть проще/безопаснее, чем динамическое создание и удаление кнопок. – AAT

ответ

1

what I do not know how to do is how to write the code so as to actually delete the assigned image on the assigned box

Я предполагаю, «удалить изображение» означает удалите из окна изображения, а не удалите с диска.

' what is 4??? 
Private Sub btnAddImage_Click(sender As Object, 
     e As EventArgs) Handles btnAddImage.Click, btnUploadImage.Click 4 

    Dim btn As Button = New Button 
    btn.Text = "Remove Image" 

    ' bla bla bla set the imagelocation 

    AddHandler btn.Click, AddressOf RemoveImage_Click 
    pb1.Controls.Add(btn)   ' btn.parent = this pb 
End Sub 

Private Sub RemoveImage_Click(sender As Object, e As EventArgs) Handles Button9.Click 
    Dim btn As Button = CType(sender, Button) 

    ' clear image 
    CType(btn.Parent, PictureBox).ImageLocation = "" 

    RemoveHandler btn.Click, AddressOf RemoveImage_Click 

    ' remove the control 
    pb1.Controls.Remove(btn) 

    ' if you remove a control, dispose of it 
    btn.Dispose() 
End Sub 

Я не уверен, я бы вызвать диалоговое перед тем проверки на следующий PB (и не будет создать новую кнопку), так как вы, кажется, хотят ничего не делать, если нет nextPB играть ,

Для получения дополнительной информации о Располагая управления удаляют, см:

В принципе, форма распоряжаться управление при закрытии. Если вы Удалите элемент управления, форма больше не имеет ссылки и не может. В результате вы должны избавиться от них.

0

Любые из этих ясного PictureBox изображения, установленное с ImageLocation:

PictureBox1.Image = Nothing 
PictureBox1.ImageLocation = "" 
PictureBox1.ImageLocation = String.Empty 
Смежные вопросы