PDA

View Full Version : یک سوال از سی شارپ



benyamin_pc
شنبه 07 مرداد 1385, 18:21 عصر
سلام ای ول چه انجمن سی شارپ توپی:قلب:
اقا 3 تا دکمه داریم با نامهای a1,a2,a3
یه random با نام RN می سازیم که بین 1-3 تغیر کنه
حالا می خواهیم
دکمه a[RN] قرمز شه چه جوری؟
مثلا تو Action script می نویسیم
root["a"+RN] va tamam_

این شیوه دستیابی به عناصر تو C#.net چه جوریه تو رو خدا یکی بگه:گریه:

omid_Ahmadi
یک شنبه 08 مرداد 1385, 06:42 صبح
می تونی هر سه دکمه رو توی یه آرایه قرار بدی، بعد عدد رندومی که تولید میشه رو به عنوان ایندکس آرایه استفاده کنی. یعنی array[RN]. بعد رنگ اون رو قرمز کنی.
(برای تغییر رنگ هم که می تونی از BackColor استفاده کنی).

benyamin_pc
یک شنبه 08 مرداد 1385, 09:47 صبح
منم می خواستم دقیقا همین کار رو انجام بدم اما چه جوری میشه دکمه را درون آرایه قرار داد؟

***UNIQUE***
یک شنبه 08 مرداد 1385, 10:32 صبح
بدون اینکه کنترلها رو خودت داخل آرایه بذاری با این دستور هم راحت میتونی بهشون دسترسی داشته باشی
مثلا" سه تا Button روی فرمت بذار با تابع


private int RandomCharcter(int y)
{
Random Number = new Random();
int rndNum = Number.Next(0, y);
return rndNum;
}

یه عدد تصادفی تولید کن و با دستور


private void Form1_Load(object sender, EventArgs e)
{
int Temp = RandomCharcter(3);
this.Controls[Temp].Visible = false;
}

میتونی خاصیت Visible دکمه ها رو تغییر بدی (هر control که به فرم اضافه میکنی یه شماره بهش اختصاص داده میشه با دستور
[نام کنترل یا شماره کنترل]this.controls
میتونی بهشون دسترسی داشته باشی

benyamin_pc
یک شنبه 08 مرداد 1385, 11:16 صبح
ببخشید آخه من برای کاری که می خوام انجام بدم می خوام همیشه اسم آبجکتام یک بخش ثابت مثل a داشته باشه و فقط یک قسمت از اون مثل 1,2,3,4,5,............
متغییر باشه و تعداد دکمه هارم از کاربر تو یه text box بپرسه و به اون تعداد دکمه ایجاد کنه!
مشکله من اونجاس که وقتی می خوام به دکمه ها توسط اسمشون دسترسی پیدا کنم C#
اون اسمرو نمی شناسه
به مثالی که به زبان Action script زدم نگاه کنین می خوام به این صورت به شی دسترسی پیدا کرد اما نمیشه
اومدم اون متغییر عددی رو به String تبدیل کردم و به a که همیشه ثابته اضافه کردم و تغریبن مشکل حل شد و اینبار کامپایلر از طریقه دسترسی به اسم ایراد نگرفت اما بعد گفت شما به یک String نمی تونین BackColor رو نسبت بدین ):

benyamin_pc
یک شنبه 08 مرداد 1385, 12:04 عصر
بهتره اینطوری بگم
root["a"+RN] l_ تو اکشن اسکریپ این جمله وقتی RN=1 است یعنی دکمه a1
اما تو سی شارپ a1 میشه اما نه به عنوان دکمه a1 در واقع نمی فهمه منظور از این a1 همان دکمه a1 است این مشکل رو چطوری میشه حل کرد؟؟

حسین حریری
یک شنبه 08 مرداد 1385, 13:29 عصر
سلام
تو اکشن اسکریپت شما میتونید این کار رو کنید ( مثل php و با استفاده از لیترالها ) اما تو #C اصلا اینطوری فکر نکن.
بهترین راه همون استفاده از آرایه است.

benyamin_pc
یک شنبه 08 مرداد 1385, 13:45 عصر
از اینکه حداقل روشن شد که این طوری نمیشه نوشت خیلی خوبه حداقل تکلیف روشن و دیگه دنبال راهی نمی گردم که به این روش یا Syntax بنویسم خودمم به آرایه فکر کرده بودم اما نتونستم دکمه ها رو تو آرایه بریزم حالا میشه یه نفر بگه چجوری میشه یک سری دکمه که تعدادشون دست کاربر رو تو یک آرایه ریخت؟؟
دکمه هایی با نامهای a1,a2,a3,.............?

حسین حریری
یک شنبه 08 مرداد 1385, 13:56 عصر
اول بگو 2003 هستی یا 2005؟
چون تو 2005 میتونی از امکانات generic هم استفاده کنی...

benyamin_pc
یک شنبه 08 مرداد 1385, 14:58 عصر
2003
چی هس اینی که گفتی؟:لبخند:

aidinwashere
یک شنبه 08 مرداد 1385, 20:53 عصر
نسخه Visual Studio که استفاده میکنید که نشان دهنده نسخه .net شما نیز هست.

benyamin_pc
دوشنبه 09 مرداد 1385, 01:57 صبح
اینو میدونم که ورژن به چی میگن:متعجب:
ایشون گفتن از generic استفاده کن این چیه؟

aidinwashere
دوشنبه 09 مرداد 1385, 02:21 صبح
به نظر من شما دوستی خودت رو با Google کمی شدید تر کن.
تک تک نتایج این صفحه بدرد شما میخوره:
http://www.google.com/search?hl=en&q=generics+tutorial+c%23&btnG=Google+Search
با احترام.

ghafoori
دوشنبه 09 مرداد 1385, 10:11 صبح
اصلا نیازی به ارایه نیست این کدها را ببین داخل این کد کاربر یک عدد را داخل textbox قرار میده
برنامه به همون تعداد براش کمه ایجاد میکند که نامشون با a شروع میشه حالا با قرار دادن یک عدد در یک textbox دیگری شماره دکمه ای که میخواهد رنگ ان عوض شود را میدهد و دکمه تغییر رنگ میدهد


private void button1_Click(object sender, EventArgs e)
{
int a;
for (a = 1; a <= Convert.ToInt32(textBox1.Text); a++) {
Button b=new Button();
b.Name = "a" + a.ToString();
b.Left = 50;
b.Top = a * 40;
b.Text = "button" + a.ToString();
this.Controls.Add(b);
}
}

private void button2_Click(object sender, EventArgs e)
{
Control ctrl;
ctrl = this.Controls.Find("a" + textBox2.Text, true)[0];
ctrl.BackColor = Color.Red;

}:چشمک:

benyamin_pc
دوشنبه 09 مرداد 1385, 12:11 عصر
دمت گرم من همینو می خواستم
اون اولم گفتیا کاش یکم همون اول دربارش توضیح می دادی دنباله همین کلمه کلیدی می گشتم
بابا تو دیگه کی هستی دسه....:قلب:

aidinwashere
سه شنبه 10 مرداد 1385, 03:11 صبح
کد قشنگی نوشتید، آفرین.