PDA

View Full Version : سوال: بازیابی عکس در جدول ونشون دادنش در گرید



farhad85
پنج شنبه 24 بهمن 1392, 10:10 صبح
سلام دوستان من! پیشاپیش ممنونم از لطف شما
من با این تابع برای بازیابی عکسم در جدول ونشون دادنش در گرید میخوام استفاده کنم


PublicFunction GetDataToImage(ByVal pData AsByte()) AsImage
Try
Dim imgConverter AsNewImageConverter()
ReturnTryCast(imgConverter.ConvertFrom(pData), Image)
Catch ex AsException
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
ReturnNothing
EndTry
EndFunction]

حالا میخوام با این کد زیر هنگام لود فرم عکس داخل جدول بازگردانی بشه تو ایمیج باکسم

کد PHP:
PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(DataGridView1.CurrentRow.Cel ls(32).Value, Byte())))


ولی این پبغامو مبده

An exception of type 'System.NullReferenceException' occurred in FARMER.exe but was not handled in user code
Additional information: Object reference not set to an instance of an object.

farhad85
پنج شنبه 24 بهمن 1392, 11:50 صبح
کسب نیست کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

behrooz69
پنج شنبه 24 بهمن 1392, 12:51 عصر
سلام.

کد نمایش عکس در لیست باکس : ( توی رویداد فرم لودت بنویس )

Me.TblRegisterInfoPicTableAdapter.Fill(Me.Register PhotoDataSet.TblRegisterInfoPic)
DataGridView1.Update()


'// metod namayesh list nam ha dar list box
Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
strSQL = "SELECT * FROM TblRegisterInfoPic"
da = New SqlDataAdapter(strSQL, con)
ds = New DataSet
da.Fill(ds, "TblRegisterInfoPic")
If con.State = ConnectionState.Open Then
Me.ListBoxInShowInfo.DataSource = ds.Tables("TblRegisterInfoPic")
Me.ListBoxInShowInfo.DisplayMember = "Fname"
Me.ListBoxInShowInfo.ValueMember = "ID"
con.Close()

End If

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

************************************************** *************************************************

حالا کد نمایش عکس از ListBox تو PictureBox : ( تو رویداد کلیک لیست باکس این کدو بنویس : ListBox1_Click)

Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
strSQL = "SELECT * FROM TblRegisterInfoPic WHERE ID=@ID"
da = New SqlDataAdapter(strSQL, con)
da.SelectCommand.Parameters.Add("@ID", SqlDbType.Int).Value = _
CInt(Me.ListBoxInShowInfo.SelectedValue)
ds = New DataSet

da.Fill(ds, "TblRegisterInfoPic")
If con.State = ConnectionState.Open Then
Dim arrPic() As Byte = CType(ds.Tables("TblRegisterInfoPic") _
.Rows(0).Item("Pic"), Byte())
Dim ms As New MemoryStream(arrPic)
Me.PicBoxInShowInfo.Image = Image.FromStream(ms)
con.Close()
End If

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

************************************************** *************************************************

حالا شما تو فرمت یه Datagridview داری و میخوای با کلیک رو ستون هاشون عکسی که توش هست رو توی یه Picturebox نشون بده .

این کد رو تو رویداد CellClick دیتاگرید ویوت بنویس :( DataGridView1_CellClick )

TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString.T rim
TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value.ToString.T rim

'// aval bayad image ma convert beshe az tarigh tabe GetDataToImage o bad neshon dade she
PicBoxInShowInfo.Image = GetDataToImage(CType(DataGridView1.CurrentRow.Cell s(7).Value, Byte()))

توضیح :: تو قسمت اول 2 تا تکس باکسه که من اومدم واسه تست کار کرد 2 تا از رشته های ستونی که شما روش کلیک میکنید رو توی تکس باکس 1 و 2 نشون دادم .
توی خط سوم هم اومدم Picturebox ام رو با استفاده از تابع تبدیل عکس اول تبدیل و بعد فراخوانی کردمش .

توجه : باید از نوع باید باشد و تبدیلشم از نوع بایت جون نمایش و ذخیره عکس به صورت بایت به بایت هستش

حالا آخرین مرحله : این تابع رو کپی و تو کدات پیست کن :

Public Function GetDataToImage(ByVal pData As Byte()) As Image
Try
Dim imgConverter As New ImageConverter()
Return TryCast(imgConverter.ConvertFrom(pData), Image)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
Return Nothing
End Try
End Function


فقط یادتون باشه تو کدها من از تیبل های خودم استفاده کردم فقط سختیه کپی پیست پایه شماست . :قهقهه:

یا حق

farhad85
پنج شنبه 24 بهمن 1392, 12:53 عصر
دست گلت درد نکنه

farhad85
پنج شنبه 24 بهمن 1392, 13:20 عصر
بهزوز جان من بابت زحمات شما واقعا تشکر میکنم که ابنطوری وبه طور دلسوزانه کمک میکنی وافغا ممنونتم

behrooz69
پنج شنبه 24 بهمن 1392, 14:45 عصر
قربونت داداشم

behrooz69
پنج شنبه 24 بهمن 1392, 14:51 عصر
قربونت داداشم