PDA

View Full Version : سوال: تغییر pictureBox به وسیله یک متد در کلاس



saber_ershadi
سه شنبه 24 بهمن 1391, 15:39 عصر
سلام دوستان

میخوام pictureBox هایی که تو فرم هست رو تغییر بدم به وسیله نوشتن یه متد تو کلاس
من یه کلاس دارم به اسم change و یه متد دارم به اسم randN که به شکل زیره :

static class change
{
public static int randN()
{
int a;
Random r = new Random();
a = r.Next(1, 7);
return a;

}
}


و این تابع رو هم تو تو From1 نوشتم برای تغییر pictureBox ها که با هر بار کلیک به صورت تصادفی یکی از pictureBox ها رو بهم نشون میده :


public void rand_pic()
{
int rand = change.randN();
for (int i = 1; i <= 6; i++)
{
PictureBox picbox = ((PictureBox)this.Controls["pb" + i.ToString()]);
picbox.Visible = false;
}
PictureBox picboxtas = ((PictureBox)this.Controls["pb" + rand.ToString()]);
picboxtas.Visible = true;
}
private void button1_Click(object sender, EventArgs e)
{
rand_pic();
}


همه اینها اجرا میشه در صورتی که مثل بالا باشه
اگه بخوام rand_pic رو ببرم تو کلاس change و بخوام تو فرم ازش استفاده کنم مشکل درست میشه دوستان من رو راهنمایی کنید
ممنون.

saber_ershadi
سه شنبه 24 بهمن 1391, 20:55 عصر
دوستان عزیز کسی هست که کمک کنه ؟

مرتضی تقدمی
سه شنبه 24 بهمن 1391, 21:02 عصر
عرض سلام


using System.Windows.Forms;
public static class change
{
public void rand_pic(Form frm)
{
int rand = change.randN();
for (int i = 1; i <= 6; i++)
{
PictureBox picbox = ((PictureBox)frm.Controls["pb" + i.ToString()]);
picbox.Visible = false;
}
PictureBox picboxtas = ((PictureBox)frm.Controls["pb" + rand.ToString()]);
picboxtas.Visible = true;
}

static class change
{
public static int randN()
{
int a;
Random r = new Random();
a = r.Next(1, 7);
return a;

}
}
}


موفق باشید

khokhan
سه شنبه 24 بهمن 1391, 21:08 عصر
سلام

آقا صابر اگه بگی که قصد ت از نوشتن این کد چیه شاید دوستان بیشتر کمک کنند

saber_ershadi
سه شنبه 24 بهمن 1391, 21:19 عصر
من یه بازی مارو پله نوشتم که البته به صورت شئ گرا نیست اگر هم باشه در حد خیلی کمه می خوام بیشتر به شکل شئ گرا در بیاد برا همین این سوال رو پرسیدم می خواستم بدونم تو کلاس ها میشه از اشیا رو فرم استفاده کرد مثلا همین pictureBox این کد هایی که نوشتم برا تغییر دادن عدد تاس بود که مثلا تاس عدد اومد با کد بالا pictureBox 5 رو نمایش بده و visible بقیه pictureBox ها رو false میکنه چطور میشه تابعی رو که بالا نوشتم به صورت یه متد یا همین تابع تو یه کلاس بنویسم ؟

مرتضی تقدمی
سه شنبه 24 بهمن 1391, 21:25 عصر
متد rand_pic رو بردم به کلاس change . منتها برای اینکه بتونیم به فرم دسترسی داشته باشیم، شیئی از نوع فرم به عنوان پارامتر تعریف کرده ایم که در داخل خود متد ازش استفاده شده.
موفق باشید

saber_ershadi
سه شنبه 24 بهمن 1391, 21:32 عصر
درست شد مرسی از پارامتر بود

مرتضی تقدمی
سه شنبه 24 بهمن 1391, 21:42 عصر
کاملا صحیح کار مینه که!


public static class change
{
public static void rand_pic(Form frm)
{
int rand = randN();
for (int i = 1; i <= 6; i++)
{
PictureBox picbox = ((PictureBox)frm.Controls["pictureBox" + i.ToString()]);
picbox.Visible = false;
}
PictureBox picboxtas = ((PictureBox)frm.Controls["pictureBox" + rand.ToString()]);
picboxtas.Visible = true;
}

public static int randN()
{
int a;
Random r = new Random();
a = r.Next(1, 7);
return a;

}
}


نحوه استفاده:


change.rand_pic(this);


موفق باشید