PDA

View Full Version : سوال: ست کردن عکس تعداد زیادی picturebox



mohammad_kazem
یک شنبه 23 آذر 1393, 23:07 عصر
سلام به همه دوستان عزیز
یک فرم دارم که توش تعداد زیادی picturebox داره. این picturebox ها رو اینجوری نام گذاری کردم: pb1, pb2, pb3 و.... . میخوام توی لود فرمم به همه این picturebox ها یک عکس اختصاص بدم. ولی نمیخوام بصورت تک تک اینکارو بکنم. بلکه میخوام توی یک حلقه for اینکارو بکنم. اگر یک شرط برقرار بود عکس شماره یک و اگر برقرار نبود، عکس شماره دو رو قرار بدم. مشکل اصلی من اینه که نمیدونم چطوری باید اندیس picturebox ها رو اضافه کنم. یعنی pb[i] رو نمیتونم پیدا کنم.
تقریبا یه همچین چیزی میخوام:


for (i=1;i++)
}
if (condition)
pb(i).image = x
else
pb(i).image = y
{

امیدوارم منظورمو درست بیان کرده باشم
از دوستانی که کمک میکنن پیشاپیش تشکر میکنم

حسین.کاظمی
دوشنبه 24 آذر 1393, 08:28 صبح
سلام
اگر درست متوجه منظورتون شده باشم میخایی با استفاده از یه حلقه تو رویداد load یک فرم براساس شروط مختلف عکس ها را نشون بده.
خب اگر شرط داره چرا از دستور swich استفاده نمیکنی راحترم هست
موفق باشی

محمد رضا فاتحی
دوشنبه 24 آذر 1393, 09:39 صبح
یه کار که می تونی بکنی اینه یه آرایه از پیچکر باکسات بساز از اون استفاده کن
PictureBox[] pic = { p1, p2, p3 };
for (int i = 0; i < pic.Length; i++)
{
///دستوراتت
}

مهرداد صفا
سه شنبه 25 آذر 1393, 17:40 عصر
سلام.
دوست من بارها پاسخ داده شده! لطفا جستجو کنید:


PictureBox pb(int index)
{
return (PictureBox)this.Controls.Find("pb"+index.ToString()).First();
}
//...
for(int i=1;i<5;i++)
pb(i).Image=condition?x:y;

mohammad_kazem
چهارشنبه 26 آذر 1393, 08:40 صبح
سلام
اگر درست متوجه منظورتون شده باشم میخایی با استفاده از یه حلقه تو رویداد load یک فرم براساس شروط مختلف عکس ها را نشون بده.
خب اگر شرط داره چرا از دستور swich استفاده نمیکنی راحترم هست
موفق باشی

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

mohammad_kazem
چهارشنبه 26 آذر 1393, 08:54 صبح
یه کار که می تونی بکنی اینه یه آرایه از پیچکر باکسات بساز از اون استفاده کن
PictureBox[] pic = { p1, p2, p3 };
for (int i = 0; i < pic.Length; i++)
{
///دستوراتت
}


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


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


PictureBox pb(int index)
{
return (PictureBox)this.Controls.Find("pb"+index.ToString()).First();
}
//...
for(int i=1;i<5;i++)
pb(i).Image=condition?x:y;


سلام دوست عزیز. خیلی ممنون از راه حل خوبتون. البته چون کارم خیلی گیر بود، قبل از اینکه جوابتون به دستم برسه یه راه حل به شکل زیر پیدا کرده بودم. البته تقریبا شبیه به همینه ولی میزارم شاید به درد کسی بخوره


string PicName = string.Empty;
for (int i = 1; i <= n; i++)
{
PicName = "PB" + (i).ToString();
PictureBox mypb = (PictureBox)this.Parent.Controls.Find(PicName, true)[0];
if (status[i] == true)
{
mypb.Image = myimage;
}
}

البته در اینجا n قبلا مقداردهی شده
موفق باشید