我是vb和sql的新手,当我单击列表视图中的选定项并在PictureBox上查看它时,有人可以帮我找回图像吗?
.SideIndicator
答案 0 :(得分:0)
您很好地选择了.Tag
属性。它可以容纳任何类型的对象。我猜您正在使用DataReader循环填充列表视图。您将在每次迭代中创建一个新的列表视图项。您可以在此ListViewItem
中用原始数据填充.Tag属性。然后,当选择该项目时,您检索原始数据,将其转换为Byte数组,并将其放置在MemoryStream中。然后,从流中填充.Image
属性。
为简化起见,我使用了一条记录和一个TextBox。
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
RetrieveImage()
Using MS As New MemoryStream(CType(txtName.Tag, Byte()))
PictureBox1.Image = Image.FromStream(MS)
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End Using
End Sub
Private Sub RetrieveImage()
Using cn As New SqlConnection(My.Settings.SmallDBConnection)
Using cmd As New SqlCommand("Select * From Sales.Customer Where CustomerID = 2", cn)
cn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader
dr.Read()
txtName.Text = dr("CustomerName").ToString
txtName.Tag = dr("Picture")
End Using
End Using
End Using
End Sub