2014-12-22 69 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 
相关问题