2014-12-22 71 views
0

我現在正在顯示來自圖片框的圖像,但我的問題是使用下一個按鈕和上一個按鈕顯示圖像。使用下一個和上一個按鈕在圖片框中顯示圖像

這是我的加載代碼:

Private Sub me_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    disconnect() 
    connect() 
    cmd = New Odbc.OdbcCommand("Select stud_pic from tablestudent order by section desc", con) 
    dr = cmd.ExecuteReader 
    If dr.HasRows Then 
     dr.Read() 
     Dim data As Byte() = DirectCast(dr("stud_pic"), Byte()) 
     Dim ms As New MemoryStream(data) 
     PictureBox1.Image = Image.FromStream(ms) 
     PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 
    End If 
End Sub 

下一個和以前按鈕:

Private Sub btnnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnext.Click 
'Do here 
End Sub 
+0

你有幾個問題。所有的數據對象都是Form Load事件的本地對象,所以你的按鈕可以做什麼都沒有。其次一個DataReader只是向前的,所以沒有辦法倒退。將整個結果數據加載到表單級DataSet/DataTable,然後通過按鈕導航它,或者添加一個導航器。 – Plutonix

+0

使用幻燈片擴展程序可能會更容易 – Dman

+0

如果可能,請存儲文件路徑而不是自身的圖像。數據庫存儲通常比文件存儲更昂貴。 – HengChin

回答

0
Private Sub me_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    disconnect() 
    connect() 
    DA = New Odbc.OdbcDataAdapter("Select stud_pic from tablestudent order by section desc", con) 
    DA.Fill(DS) 

    counter = 0 

    Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 
End Sub 

Private Function GetImageFromByteArray(ByVal picData As Byte()) As Image 
    If picData Is Nothing Then 
     Return Nothing 
    End If 

    Dim bmData As Integer = IIf((picData(0) = 21 AndAlso picData(1) = 28), 78, 0) 

    ' load the picture 
    Dim img As Image = Nothing 
    Try 
     Dim ms As New MemoryStream(picData, bmData, picData.Length - bmData) 
     img = Image.FromStream(ms) 
    Catch 
    End Try ' return what we got Return img 
    Return img 

End Function 

Private Sub btnnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnext.Click 
    PictureBox1.Image = GetImageFromByteArray(DS.Tables(0).Rows.Item(counter).Item(0)) 
    If counter < Me.DS.Tables(0).Rows.Count - 1 Then 
     counter += 1 
    End If 

End Sub 

Private Sub btnprev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprev.Click 
    PictureBox1.Image = GetImageFromByteArray(DS.Tables(0).Rows.Item(counter).Item(0)) 
    If counter > 0 Then 
     counter -= 1 
    End If 
End Sub 
相關問題