PDA

View Full Version : سوال: استفاده از شي nام در برنامه ...



SMDaneshvar
چهارشنبه 22 دی 1389, 11:11 صبح
با سلام،
100 تا Picturebox با نام هاي Pic01,Pic02,Pic03...,Pic100 دارم،
با استفاده از يه متد يه عدد بين 1 تا 100 مي گيرم، و توي متغير به اسم n ذخيره مي كنم.
حالا مي خوام تصوير Picturebox شماره nام رو تغيير بدم ...
يه چيزي شبيه استفاده از آرايه ها با انديس[Array[n منتها براي يك شي ...
ممنون مي شم اساتيد راهنمايي كنن :گل

group45
چهارشنبه 22 دی 1389, 11:25 صبح
سلام
یه اونت واسه پیکچر باکست زمان ساختنش بساز مثلا حالت کلیک رو مو اینجا واسه یه لیبل میگم که کداش هیچ فرقی نمیکنه فقط باید جای لیبل پیکچر باکس بزاری یعد با اونتی که میسازی میتونی به همشون دسترس داشنه باشی


void lbl_Click(object sender, EventArgs e)
{
Label l = (Label)sender;
MessageBox.Show(l.Text);
}


این کد هم واسه ساختن ان تا لیبل هست که همون خاصیتی رو که گفته بودم واسه هر کدوم میزاره


for (int i = 0; i < MyControlCount; i++)
{
Label lbl = newLabel();
lbl.Name = "lbl" + i.ToString();//baraye dastresi dar hengam code nevisi
lbl.Location = newPoint(newX,newY );
lbl.Visible = true;
lbl.Text = i.ToString();
lbl.BackColor = Color.Red;
lbl.Click += newEventHandler(lbl_Click);
this.Controls.Add(lbl);
newY += lbl.Height;
}

SMDaneshvar
چهارشنبه 22 دی 1389, 12:02 عصر
نمي دنم ولي من متوجه اين برنامه كه شما گفتين نشدم :سوت
شايد من منظورم رو بد بيان كردم ... واسه بيان ساده تر اينجوري مي گم :
الان يه فرم با اين مشخصات دارم :
2 تا دونه Picturebox با نام هاي Pic1و Pic2 و 1 دونه Textbox و 1 دونه Button
حالا مي خوام با كليك روي Button عدد موجود در Text رو بگيره و يك تصوير رو توي[(Pic[Int32.Parse(Textbox1.text چاپ كنه.
يعني در حقيقت شماره 1 يا 2 رو بگيره و يك تصوير رو توي Picturebox اول يا دوم چاپ كنه ...

اميدوارم درست بيان كرده باشم، و شرمنده اگر آماتور هستم ...
تشكر :گل
.

Reza_Yarahmadi
چهارشنبه 22 دی 1389, 12:51 عصر
روشهاي زيادي براي اين كار وجود داره. ساده ترين حالتش بصورت زيره
((PictureBox)Controls.Find("Pic" + n, true)[0]).Image = Image.FromFile("");

shuriken
چهارشنبه 22 دی 1389, 14:25 عصر
همونطور که دوستمون گفتن روشهای زیادی وجود داره
ولی ساده ترین راه اینه که شما یک آرایه از picturebox ها درست کنین.
بعد براحتی میتونین به هرکدوم که خواستین با اندیسش دسترسی داشته باشین.



Picturebox pic_arrey[] = new Picturebox[100];
for(int i = 0; i<100;++i)
{
pic_arrey[i]=new Picturebox();
pic_array[i].Location = new Point(x,y);
pic_arrey[i].Name = "whatyouwant"+i.ToString();
...
}


بعد در event فرمتون اونارو به فرم اضافه کنین.

البته اگه با اضافه کردن کدی picturebox ها مشکل دارین میتونین اونارو بصورت visual به
فرم اضافه کنین ولی موقع اسم تعیین کردن براشون بصورت منظم اسم بدین مثلا:
pic1,pic2,...pic100
بعد با استفاده از تابع Find کنترل parent اشون (که اینجا همون فرممونه) اونارو پیدا کنین و بهشون دسترسی داشته باشین.
در مورد همه ی کنترل ها شما میتونین از این دو روش آسون استفاده کنین.

اگه باز مشکلی بود در خدمتم