PDA

View Full Version : ایحاد اشیا با یک نام مشخص



rahzani
جمعه 06 بهمن 1385, 12:17 عصر
سلام
من یه سوالی در موردNET.#C داشتم:
می خواستم بدونم اگه بخواهم 100 کامند را به صورت یک نام مشخص و با صد تا ایندکس از 0 تا 100 باشه باید چه خاصیتی رو تنظیم کنم که باعث بشه به صورت ایندکسی در بیاید.
با تشکر
به طور ساده ایجاد چند شی مثل 100 تا دکمه با یک نام مشترک چگونه است.

Amir Oveisi
جمعه 06 بهمن 1385, 13:44 عصر
از آرایه استفاده کنید

benyamin_pc
شنبه 07 بهمن 1385, 02:01 صبح
چطوری با آرایه؟

Behrooz_CS
یک شنبه 08 بهمن 1385, 10:47 صبح
Button[] btn = new Button[100];

// Sample using
btn[0].Text = " Any";
.
.
.

سار
یک شنبه 08 بهمن 1385, 12:51 عصر
یک کلاس برای کارمندانت حتمن داری، میتونی یک لیست از روی اون کلاست ایجاد کنی.

benyamin_pc
یک شنبه 08 بهمن 1385, 14:03 عصر
آقا بهروز من دقیقا یه چیزی مثل همین کدی که شمل نوشتی می خواستم
اما برای دکمه های معمولی به شکل زیر کار میکنه
Button btn=Button();
Controls.Add(btn);
btn.Left=2;
اما برای ایجاد آرایه ای از دکمه ها به شکل زیر کار نمی کنه!
Button[] btn = new Button[3];
Controls.Add(btn[2]);
btn[2].Left=2;

Behrooz_CS
یک شنبه 08 بهمن 1385, 17:17 عصر
کدی که من گذاشتم یک ایراد کوچیک داره که الان رفع کردم :


Button[] btn = new Button[100];

// Sample using
for(int i=0 ; i<100 ; i++)
{
btn[i] = new Button();
btn[i].Text = " Any";
btn[i].Name = "btn" + i.ToString();
this.Controls.Add(btn[i]);
}

RED-C0DE
یک شنبه 08 بهمن 1385, 19:46 عصر
سلام بچه ها... راجع به همین قضیه من هم یه مشکلی دارم:
یه بازی TicTac (سرویس قطار 5 تایی) که نوشتمش (یک نفره با کامپیوتر، کامپیوتر با کامپیوتر، 2 نفره) اما فقط یه چیز درست نشد....من از یک آرایه 2 بعدی استفاده می کنم با 13 تا خونه.. و هر خونه هم یک Label هست.. => یعنی 169 تا Label..
حالا مشکل اینجاست که چون تعداد این Label ها زیاده، موقع نمایش اذیت می کنن. مثلا وقتی برنامه داره اجرا می شه و من صفحه دیگه ای رو (مثلا MyComputer) رو انتخاب کنم و برنامه ام، بره پشت MyComputer، و بعدش بخوام دوباره اونو انتخاب کنم، نمایش Label ها طول می کشه.
امیدوارم منظورم رو فهمیده باشین و ممنون می شم راهنماییم کنین...
اگه این عکس رو ببینین متوجه می شین که Label ها وقتی می خوان Paint بشن خیلی طول می کشه...

http://aycu14.webshots.com/image/7933/2000119134649613281_rs.jpg

Amir Oveisi
دوشنبه 09 بهمن 1385, 21:38 عصر
به جای label از اشیای گرافیکی استفاده کن خوب!

RED-C0DE
سه شنبه 10 بهمن 1385, 01:05 صبح
به جای label از اشیای گرافیکی استفاده کن خوب!
منظورت کدوم اشیا است؟
با PictureBox هم به همین مشکل بر می خورم!

ali_kolahdoozan
سه شنبه 10 بهمن 1385, 08:35 صبح
من اشیایی گرافیکی منظورشون ساخت آنها با دستورات گرافیکی است مثلا از مربع استفاده کنید البته بعد مدیریت حرکاتش سخت میشه

Behrooz_CS
چهارشنبه 11 بهمن 1385, 18:31 عصر
اگر توی حالت DEBUG کامپایل می کنی ، این کار رو نکن !
با Ctrl + F5 کامپایل کن
با حتی در مد Release با Ctrl + F5 این کار را انجام بده ؛ در این مد کدت بهینه می شه و سریعتر اجرا می شه

RED-C0DE
چهارشنبه 11 بهمن 1385, 19:20 عصر
اگر توی حالت DEBUG کامپایل می کنی ، این کار رو نکن !
با Ctrl + F5 کامپایل کن
با حتی در مد Release با Ctrl + F5 این کار را انجام بده ؛ در این مد کدت بهینه می شه و سریعتر اجرا می شه
خوب، همینطور که خودت می گی ali جان، مدیریتشون (مثلا بکاگیری بعضی رویدادها) واقعا مشکل و در بعضی موارد غیر ممکن می شه...

Behoorz جان، تمام این حالتهایی که گفتی فرقی به حال اون قضیه نمی کنه. و البته فکر کنم ربطی هم به این مسئله نداشته باشه..
باز هم ممنون از کمکتون..
اگه راه دیگه ای به نظرتون می رسه لطفا بگین..

ممنون می شم.
در ضمن بازی رو هم تو سایت گذاشتم ..اگه مایل بودید دریافتش کنید...هوش مصنوعی کامپیوتر هم قابل قبوله :
http://barnamenevis.org/forum/showthread.php?t=60464

smt_414
شنبه 15 دی 1386, 18:56 عصر
سلام
یک سوال چطور می شه ایونت براشون تعریف کرد
این کد ایراد می گیره
btn[i].Click += new System.EventHandler(btn[i]_Click
تشکر

sinpin
یک شنبه 16 دی 1386, 00:42 صبح
من اشیایی گرافیکی منظورشون ساخت آنها با دستورات گرافیکی است مثلا از مربع استفاده کنید البته بعد مدیریت حرکاتش سخت میشه

خوب، همینطور که خودت می گی ali جان، مدیریتشون (مثلا بکاگیری بعضی رویدادها) واقعا مشکل و در بعضی موارد غیر ممکن می شه...

اگه طراحی کلاس اشیاء گرافیکی رو صحیح انجام بدید (مثلا داشتن خاصیت position یا متود Move و ...) کار کردن با اشیا گرافیکی میتونه از کار کردن با کنترلها هم خیلی راحتتر باشه (به شرط اینکه خوب اون رو encapsulate کنید)

برای مثال در بازی MineSweeper در نگاه اول ممکنه بنظر برسه که یک ماتریس از دکمه ها است در حالیکه فقط از یک تصویر پشت زمینه شطرنجی استفاده شده و سایر کارها با دستکاری گرافیکی انجام میشه.

smt_414
دوشنبه 17 دی 1386, 14:53 عصر
سلام
تشکر
سوالم رو جور دیگه مطرح می کنم
من کاری با باتم ها نداشتم
فقط خواستم سوالم رو زیاد توضیح ندم
من آرایه ای از پیکچر باکس ساختم و
خواستم رو همه اونها ایونت Click رو فعال کنم که بتونم تو برنامه ازش استفاده کنم
اما این کد رو قسمت اندیس آرایه (داخل پرانتز ) ایرور می دهد

btn[i].Click += new System.EventHandler(btn[i]_Click)

چه باید کرد ؟

Mahdi.Kiani
دوشنبه 17 دی 1386, 17:03 عصر
سلام
تشکر
سوالم رو جور دیگه مطرح می کنم
من کاری با باتم ها نداشتم
فقط خواستم سوالم رو زیاد توضیح ندم
من آرایه ای از پیکچر باکس ساختم و
خواستم رو همه اونها ایونت Click رو فعال کنم که بتونم تو برنامه ازش استفاده کنم
اما این کد رو قسمت اندیس آرایه (داخل پرانتز ) ایرور می دهد

btn[i].Click += new System.EventHandler(btn[i]_Click)

چه باید کرد ؟

سلام
ابتدایی ترین نکته در سی شارپ :
شناسه ها حتما با حروف یا با underscore یعنی علامت (_) که به غلط underline هم تلفظ می کنن، میتونه شروع بشه و در ادامه هم میتونه سامل اعداد باشه
خطای شما مربوط به استفاده کاراکتر کروشه در اسم متد مربوط به هندل رویداد کلیک دکمه ها هست نه اندیس !!!!




buttons[i].Click += new EventHandler(buttons_Click);







void buttons_Click(object sender, EventArgs e)
{
// code for handle Buttons
}



در ضمن این مسئله بار ها و بارها مطرح شده و جواب داده شده
فقط فرقش اینه که یه بار برای Label ها، یه بار برای Textbox ها.این بار هم برای Button ها و دفعه بعد هم احتمالا برای .....

smt_414
دوشنبه 17 دی 1386, 17:22 عصر
سلام
دوست عزیز تشکر
حرف شما کاملا صحیح
شما اینطور در نظر بگیر ما 5 تا پیکچر باکس داریم با این شیوه برای همه اونا ایونت تعریف کردیم
حالا بر فرض بخواهیم ایونت مربوط به پیکچر باکس 3 رو اجرا کنیم
خب چه کنیم همه اونا ایونت دارن ولی همه به یه اسم
چطور بهش بفهمونیم با کدومشون کار داریم؟؟؟

Mahdi.Kiani
دوشنبه 17 دی 1386, 18:28 عصر
سلام
دوست عزیز تشکر
حرف شما کاملا صحیح
شما اینطور در نظر بگیر ما 5 تا پیکچر باکس داریم با این شیوه برای همه اونا ایونت تعریف کردیم
حالا بر فرض بخواهیم ایونت مربوط به پیکچر باکس 3 رو اجرا کنیم
خب چه کنیم همه اونا ایونت دارن ولی همه به یه اسم
چطور بهش بفهمونیم با کدومشون کار داریم؟؟؟

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

در پست قبلی می تونید از یکی از کد های زیر برای اینکه بفهمین کدوم دکمه کلیک شده استفاده کنید

کد 1



Button senderButton = sender as Button;


کد 2



Button senderButton = (Button)sender;



این کد ها را باید در رویداد کلیک Button بنویسید (البته یکی از این کد ها را)
senderbutton همون Button ای هست که فشرده شده

plzzzzzzzzzz searchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh before type any word!!!!!!!!!!!!!!!!!!!!

smt_414
دوشنبه 17 دی 1386, 20:06 عصر
سلام

واقعا لطف کردید
این کد منه
ببینید

picbox[j].Click += new System.EventHandler(picbox_Click);
private void picbox_Click(object sender, EventArgs e)
{
PictureBox senderpicbox = (PictureBox)sender;
}


حالا از این senderpicbox چطور باید مشخص کرد که کدام پیکچرباکس است با کانورت کردنش هم چیزی در نیومد
لطف کنید بیشتر توضیح بدید

Amir Oveisi
سه شنبه 18 دی 1386, 00:50 صبح
دوست عزیز شما مگه هر picBox تون یه اسم نداره؟
خوب تو ساده ترین روش این کارو میشه کرد که یه switch بذارین و توش چک کنین که senderpicbox تون چه اسمی داره و با اسمش بفهمین که کدومشونه!

(دیگه نباید مشکلی باشه!!! )

Mahdi.Kiani
سه شنبه 18 دی 1386, 08:40 صبح
سلام

واقعا لطف کردید

این کد منه
ببینید

picbox[j].Click += new System.EventHandler(picbox_Click);
private void picbox_Click(object sender, EventArgs e)
{
PictureBox senderpicbox = (PictureBox)sender;
}


حالا از این senderpicbox چطور باید مشخص کرد که کدام پیکچرباکس است با کانورت کردنش هم چیزی در نیومد
لطف کنید بیشتر توضیح بدید

دوست عزیز senderpicbox همون picturebox ای هست که روش کلیک شده. با senderpicbox می تونید به تمامی خواص اون picturebox ای که روش کلیک شده را داشته باشین
خواصی مثل Name و ....
نمونه برنامه را می فرستم نگاه کنید
برای button ها نوشتم ولی هیچ فرقی نمیکنه..شما می تونید اونو برای picturebox ها بنویسید
در این برنامه با کلیک بر روی هر button خواص اون را مشاهده می کنید