PDA

View Full Version : سوال: بدست آوردن کد عکس جاری در PictureBox



pesare
جمعه 14 تیر 1392, 11:40 صبح
سلام دوستان

من تعدادی عکی داخل SQL ذخیره میکنم , بعد اونها رو داخل PictureBox دونه دونه نمایش میدم , ولی نمیدونم این عکسی که الان داره نمایش داده میشه کد اصلیش (Primery Key) داخل بانکم چیه , چطوری میتونم اونو بدست بیارم؟

Mahmoud.Afrad
جمعه 14 تیر 1392, 12:15 عصر
باید آدرس رو همراه کلیداصلی سلکت کنید. موقع نمایش هم میتونید از راه های مختلفی استفاده کنید مثلا کلید را در Tag پیکچرباکس ذخیره کنید و هر وقت لازم بود بخونید.

pesare
جمعه 14 تیر 1392, 12:38 عصر
من خود عکس رو تو دیتا بیس ذخیره میکنم , ذخیره کلید در Tag چطوریه؟میشه توضیح بدی؟
باید آدرس رو همراه کلیداصلی سلکت کنید. موقع نمایش هم میتونید از راه های مختلفی استفاده کنید مثلا کلید را در Tag پیکچرباکس ذخیره کنید و هر وقت لازم بود بخونید.

hojjatshariffam
جمعه 14 تیر 1392, 12:43 عصر
خب این کدو بنویس
PictureBox.Tag = "";

pesare
جمعه 14 تیر 1392, 12:47 عصر
من از کد زیر برای نمایش عکس تو PictureBox استفاده میکنم , البته بصورت 3 لایه این کار انجام میشه


try
{
Picture p = new Picture();
p.AR_Fk = Int32.Parse(txtID.Text);
DataTable dt = p.APRPic();
if (dt.Rows.Count > j)
{

MemoryStream ms = new MemoryStream(dt.Rows[j].Field<byte[]>("Pic"));
pictureBox1.Image = Image.FromStream(ms);
j++;
}

else
{
j = 0;
MemoryStream ms = new MemoryStream(dt.Rows[j].Field<byte[]>("Pic"));
pictureBox1.Image = Image.FromStream(ms);
j++;
}
}
catch
{

hojjatshariffam
جمعه 14 تیر 1392, 13:18 عصر
ببین من از این کد استفاده کردم
اینم سه لایست برا همین خبری از کد اس کیو ال نیست

Personality Per_Pic = new Personality();
Per_Pic.Person_ID = Person_ID;
PPictureBox.tag = Person_ID;
Byte[] Pic_Byte = PersonalityManagment.FetchPicture_With_Key(Per_Pic );
PPictureBox.BackgroundImage = PictureCoding.DeCodePic(Pic_Byte);

خب اینجا داخل یه for چندین عکس از دیتا بیس بدست اومده که که کلیدشون همون Person_ID هستش
اونارم توی تگ اون پیکچر باکس میزارم و هر موقع روی عکس کلیک کردم بر حسب اون کلید میرم و کلی اطلاعات دیگه میارم از دیتا بیس
فکز کنم منظورتون همینه آره؟
خب موقع استفاده هم می نویسیم که


fetchCod=PPictureBox.tag;

pesare
جمعه 14 تیر 1392, 13:40 عصر
خوب تونستم تصویر رو حذف کنم , اما میخوام PictureBox دوباره Load بشه , حالا چیکار کنم؟

hojjatshariffam
جمعه 14 تیر 1392, 13:58 عصر
خوب تونستم تصویر رو حذف کنم , اما میخوام PictureBox دوباره Load بشه , حالا چیکار کنم؟

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

pesare
جمعه 14 تیر 1392, 14:00 عصر
وقتی که عکی حذف میشه از بانک پاک میشه اما هنوز تو picturebox هست , میخوام وقتی حذف میشه تو picturebox هم نباشه .
یعنی می خوای با عکس بعدی لود بشه؟
(البته بجز تگ روش های دیگه ای هم برای این کار میشه استفاده کرد مثلا از لیست ها ولی فکر کنم این کار هم ساده بود و هم برای کاربرد شما مناسب)

hojjatshariffam
جمعه 14 تیر 1392, 14:17 عصر
خب می تونی این کار رو بکنی

PPictureBox.BackgroundImage = null;

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

hojjatshariffam
جمعه 14 تیر 1392, 14:23 عصر
البته تو متد لایه منیجرت که کد اسکیو الت هست میتونی یه فلگ برگردونی که بهت بگه که از دیتا بیس حذف شد یا نه
بعد اگه برات True برگردونه می تونی اون موقع حذفش کنی از ژیکژر باکس
مثل این

if(picuteManagment.delete(picturebox1.tag))
picturebox1.backgroungimage = null;

pesare
جمعه 14 تیر 1392, 14:36 عصر
به یه مشکلی برخوردم , وفتی چند تا عکس رو پشت سر هم حذف میکنم , عکس اخری حذف نمیشه , باید یکبار صفحه رو ببندم , دوباره باز کنم و بعد حذف کنم , مشکل کجاست؟