2013-05-27 1 views
3

Я собираюсь сделать приложение, которое отображает фотографии. Я хочу добавить функцию «Удалить», но я столкнулся с проблемой. Проблема заключается в пробелах между изображениями. Я хочу их удалить.Удаление пробелов в System.Array

Например:

У меня есть массив как это:
{1 = image_1, 2 = image_2, 3 = image_3}

когда я удалить IMAGE_2 у меня есть:
{1 = image_1, 2 = nil, 3 = image_3}

Я хочу:
{1 = image_1, 2 = Image_3}

Код:

Public Class Form1 
Dim latestImageId As Integer = 0 
Dim dispPictureId As Integer = 0 
Dim images(128) As Image 

Private Sub CapturePic(sender As Object, e As EventArgs) Handles TestToolStripMenuItem.Click 
    If My.Computer.Clipboard.ContainsImage() Then 
     latestImageId = (latestImageId + 1) 
     images(latestImageId) = My.Computer.Clipboard.GetImage() 
     If dispPictureId = 0 Then 
      Label1.Text = dispPictureId 
      dispPictureId = 1 
      PictureBox1.Image = images(dispPictureId) 
     End If 
    End If 
    Label1.Text = dispPictureId 
End Sub 

Private Sub Nex_Click(sender As Object, e As EventArgs) Handles Nex.Click 
    If Not images(dispPictureId + 1) Is Nothing Then 
     PictureBox1.Image = images(dispPictureId + 1) 
    Else 

     Exit Sub 
    End If 
    dispPictureId = (dispPictureId + 1) Mod images.Length 
    Label1.Text = dispPictureId 
End Sub 

Private Sub Pre_Click(sender As Object, e As EventArgs) Handles Pre.Click 
    If Not images(dispPictureId - 1) Is Nothing Then 
     PictureBox1.Image = images(dispPictureId - 1) 
    Else 
     Exit Sub 
    End If 
    dispPictureId = (dispPictureId - 1) Mod images.Length 
    Label1.Text = dispPictureId 
End Sub 

Private Sub Del_Click(sender As Object, e As EventArgs) Handles Del.Click 
    images(dispPictureId) = Nothing 
    If images(dispPictureId) Is Nothing Then 
     dispPictureId = dispPictureId - 1 
    End If 
    dispPictureId = 1 
    Label1.Text = dispPictureId 
End Sub 
End Class 

ответ

4

Я бы порекомендовал хранить ваши изображения в другом типе коллекции вместо массива, например List(Of T), или даже LinkedList(Of T).

Это позволит вам удалить изображение из коллекции напрямую, используя List.Remove и т. Д.

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