PDA

View Full Version : عوض کردن خاصیت کنترل ها با متد یا کلاس



complexcoding
چهارشنبه 08 دی 1389, 23:49 عصر
عوض کردن خاصیت کنترل ها با متد یا کلاس:دوستان سلام من در ساخت نرم افزارها مشکلاتی دارم که مثلا رنگ همه دکمه ها را در رویداد کلیک عوض کنم :
button1_click
pictureBox29.Visible = true;
pictureBox28.Visible = true;
pictureBox27.Visible = true;
pictureBox26.Visible = true;
و... رنگ ها و هزار چیزه دیگه که حجم پروژه من رو خیلی بالا می بره و در کدها سر در گم می شم نمی شه کاری کرد که با فراخوانی یک کلاس یا نوشتن یک متد دکمه های تعریف شده در آن متد به خاصیت مورد نظر تبدیل بشن یا هر چی که تو ذهن شماست ممنونم.

chasbonakam
پنج شنبه 09 دی 1389, 00:06 صبح
سلام
شما می تونی از ارایه استفاده کنی

مثلا برای picturebox هات ارایه ای از جنس picture box ایجاد کن.

فقط برای بار اول باید تمامی کنترل های مورد نظر رو تو ارایه بریزی و بعد می تونی با استفاده از حلقه ها مثل for روی کنترل های برنامه اعمال مدیریت کنی

amir-yeketaz
پنج شنبه 09 دی 1389, 00:06 صبح
راه که زیاده قربونت!!!!

بیا این یکیش:

foreach (Control item in this.Controls)
{
if (item is PictureBox)
{
item.Visible = false;
}

}
خوب این چیکار میکنه؟
لیست تمام کنترل های موجود در فرم رو میگیره ، بعد اگه اون کنترل از نوع pictureBox بود میادو خاصیت visible اونو false میکنه ...

موفق باشید

chasbonakam
پنج شنبه 09 دی 1389, 00:13 صبح
خب حالا می تونی یه متد بنویسی که تمامی picturebox هات رو نمایان کنه.



PictureBox[] pic = new PictureBox[100];

public void showallpicturebox()
{
for(i=0;i<=99;i++)

pic[i].visible=true;
}



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

complexcoding
پنج شنبه 09 دی 1389, 02:45 صبح
دوستان واقعا ممنونم ولی اگر بخواییم picturebox ها رو مدیریت کنیم چی؟
مثلا یه متد که فقط picturebox های 2 تا 6 با یک دکمه true و picturebox های 8 و 9 و 88 با یک دکمه true ؟
ببینید این درسته؟



PictureBox[] pic = new PictureBox[4];
pic[0]=PictureBox12
pic[1]=PictureBox8
pic[2]=PictureBox22
pic[3]=PictureBox3
pic[4]=PictureBox4
public void showallpicturebox()
{
for(i=0;i<=4;i++)

pic[i].visible=true;
}


بعد این متد رو حتما باید تو کلاس بنویسیم؟یه توضیح هم درباره این بدید .(از دوستان حرفه ای در سی شارپ تقاضا می شود آی دی yahoo مرا add کنند tooraj.jeegar)

مثلا نگاه کنید این فضای Class1 من هست که از گزینه add item در نوار ابزار آوردم add Class رو فشار دادم:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Game_Picture
{
class Class1
{
}
}

حالا وقتی توش نوشتیم در فضای نام پروژه اصلی چی بیاریم؟
اینجوری در رویداد کلیک مورد نظر ازش استفاده کنیم؟


pic.showallpicturebox()


لازم نیست بگید خودم می دونم چقدر داغونم:گریه:

flash118
پنج شنبه 09 دی 1389, 06:04 صبح
دوست عزیز با سلام
اول بگم خدمتتون سعی کنید در برنامه تون اصول شی گرایی را رعایت کنید دوم شما خیلی سخت میگیری راه های زیادی هست البته راه پویا که هست دوستمون براتون گفتن استفاده از foreach هست
دوست عزیز برای این که موضوع و راه رو سریع و بهینه برید من آدرس رفرنس اصلی گذاشتم تقریبا اونایی که میخواهی رو اونجا هست امیدوارم موفق باشی در ضمن اگه بازم به مشکلی برخوردی و نتیجه نگرفتی با کد خدمتتون عرض میکنم شاد باشید
لینک:http://social.msdn.microsoft.com/Search/en-US?query=picturebox%20c%23&ac=1

chasbonakam
پنج شنبه 09 دی 1389, 10:35 صبح
دوست عزیز شما الان تو کلاس فرم هستی نیازی نیست برای انجام این کار یه کلاس دیگه تعریف کنی

متد ها رو تو همون فرم بنویس

complexcoding
پنج شنبه 09 دی 1389, 16:05 عصر
دوستان هیچکس نگفت این درسته یا نه؟


PictureBox[] pic = new PictureBox[4];
pic[0]=PictureBox12
pic[1]=PictureBox8
pic[2]=PictureBox22
pic[3]=PictureBox3
pic[4]=PictureBox4
public void showallpicturebox()
{
for(i=0;i<=4;i++)

pic[i].visible=true;
}

amir-yeketaz
پنج شنبه 09 دی 1389, 16:28 عصر
دوستان هیچکس نگفت این درسته یا نه؟


PictureBox[] pic = new PictureBox[4];
pic[0]=PictureBox12
pic[1]=PictureBox8
pic[2]=PictureBox22
pic[3]=PictureBox3
pic[4]=PictureBox4
public void showallpicturebox()
{
for(i=0;i<=4;i++)

pic[i].visible=true;
}


یعنی چی درسه؟!!
الان این 5 تا پیکچرباکس موجود در فرم رو خاصیت visible شون رو true میکنه ... اگرم متوجه نمیشین که چجوری این امکان به وجود میاد ، باید بگم که از اونجایی که کلاس ها (مثه همین PictureBox) از نوع Reference Type هستن این حالت به وجود میاد ...

complexcoding
یک شنبه 12 دی 1389, 11:20 صبح
سلام دوستان من خواص این pictureboxها رو با آرایه ای که در پست بالا درستیش تایید شد نوشتم ولی کجای کدهای کلاس فرم اصلیم بنویسم تا بتونم ازش استفاده کنم هر جا می نویسم پیغام خطا میده؟

complexcoding
یک شنبه 12 دی 1389, 12:45 عصر
احتیاج فوری لطف کنید جواب بدید؟؟؟؟؟؟

amir-yeketaz
یک شنبه 12 دی 1389, 12:46 عصر
سلام دوستان من خواص این pictureboxها رو با آرایه ای که در پست بالا درستیش تایید شد نوشتم ولی کجای کدهای کلاس فرم اصلیم بنویسم تا بتونم ازش استفاده کنم هر جا می نویسم پیغام خطا میده؟
خط اولو بذارین به عنوان یه فیلد از کلاستون ... بقیشم دیگه بستگی به زمانی که می خواین فراخونی بشه باید تو یه متد باشه!!!!!!

complexcoding
یک شنبه 12 دی 1389, 13:28 عصر
برادر من نمی تونم:گریه:
ببین من چیکار کردم (فضای Class1 من هست که از گزینه add item در نوار ابزار آوردم add Class رو فشار دادم)
بعد داخلش

//PictureBox[] pic = new PictureBox[4];
//pic[0]=PictureBox12
//pic[1]=PictureBox8
//pic[2]=PictureBox22
//pic[3]=PictureBox3
//pic[4]=PictureBox4
//public void showallpicturebox()
//{
//for(i=0;i<=99;i++)

//pic[i].visible=true;
//}نوشتم error داد اومدم خط اولش رو نوشتم بعد تو فرم اصلی تو using رفتم نوشتم using class1.pic بازم error داد!!!؟؟

amir-yeketaz
یک شنبه 12 دی 1389, 13:33 عصر
من که درست متوجه نمیشم چیکار کردین!!!!
اگه برنامه ی این کاری که میخواین بکنینو برام بفرستین شاید بتونم براتون درسش کنم!