PDA

View Full Version : سوال: چجوري آرايه اشاره كر تعريف كنم



rashid1368
چهارشنبه 18 اردیبهشت 1387, 19:30 عصر
با سلام
نحوه ي ايجاد اشاره گر رو مي خواستم
من يه آرايه ده تايي از button تعريف كردم
يه panel دارم كه تو اون اين دكمه ها اضافه مي شه
ولي معلومه ديگه 10 تا بيشتر نمي شه
اگه ممكنه راهنمايي كنيد
ضمنا نحوه دسترسي به ارايه اشاره گر رو هم بنويسيد
مثلا اگر بخوام مقدار text دهمين دكمه رو عوض كنم چجوري مي شه
بدون اشاره گرش اينه
"button[9].text="as

علیرضا مداح
چهارشنبه 18 اردیبهشت 1387, 20:38 عصر
سلام دوست عزیز ،
نمونه ای بسیار ساده :


Button button1 = new Button();
button1.Text = "Button1";
button1.Location = new Point(10, 20);
Button button2 = new Button();
button2.Text = "Button2";
button2.Location = new Point(10, 50);
this.Controls.Add(button1);
this.Controls.Add(button2);
Button[] buttons = new Button[] { button1, button2 };
buttons[0].BackColor = Color.Red;
buttons[1].BackColor = Color.Blue;

rashid1368
پنج شنبه 19 اردیبهشت 1387, 08:24 صبح
خيلي ممنون از جوابتون
يه كم بيشتر توضيح مي دم
من دارم يه برنامه مي نويسم كه
مي شه مثل سي شارپ كنترل اضافه كرد
خاصيت هاشو تغيير داد، براش كد نوشت
همه اينا رو انجام دادم
فقط مونده اين كه هر چي خواست كنترل اضافه كنه نه ده تا
پس مشخص نيست چند تا دكمه وجود داره روي صفحه كه بشه به اين روش نوشت
در كل ممنون(اگه كسي ارايه اشاره گر مي دونه يادم بده)

علیرضا مداح
پنج شنبه 19 اردیبهشت 1387, 08:50 صبح
دوست عزیز توجه کنید ، وقتیکه که شما یک شی ء Button میسازید و آن را به یک کالکشن/آرایه اضافه میکیند ،به طور پیشفرض در واقع یک اشاره گر از آن شی ء در کالکشن/آرایه ذخیره میشود ، در مثال فوق هر دو شیء Button هم به کالکشن Controls و هم به آرایه ایجاد شده از Button ها اضافه شده اند ولی در واقع یک پوینتر از آنها در کالکشن و آرایه قرار دارد ، به کد زیر توجه کنید :


Button button1 = new Button();
button1.Name = "button1";
button1.Text = "Button1";
button1.Location = new Point(10, 20);

Button button2 = new Button();
button2.Name = "button2";
button2.Text = "Button2";
button2.Location = new Point(10, 50);
this.Controls.Add(button1);
this.Controls.Add(button2);
Button[] buttons = new Button[] { button1, button2 };


حال شما میتوانید به دو صورت زیر به شیء button1 دسترسی داشته باشید :

this.Controls["button1"].BackColor = Color.Red;
یا

buttons[0].BackColor = Color.Red;

rashid1368
جمعه 20 اردیبهشت 1387, 22:06 عصر
دوست عزیز توجه کنید ، وقتیکه که شما یک شی ء Button میسازید و آن را به یک کالکشن/آرایه اضافه میکیند ،به طور پیشفرض در واقع یک اشاره گر از آن شی ء در کالکشن/آرایه ذخیره میشود ، در مثال فوق هر دو شیء Button هم به کالکشن Controls و هم به آرایه ایجاد شده از Button ها اضافه شده اند ولی در واقع یک پوینتر از آنها در کالکشن و آرایه قرار دارد ، به کد زیر توجه کنید :


Button button1 = new Button();
button1.Name = "button1";
button1.Text = "Button1";
button1.Location = new Point(10, 20);

Button button2 = new Button();
button2.Name = "button2";
button2.Text = "Button2";
button2.Location = new Point(10, 50);
this.Controls.Add(button1);
this.Controls.Add(button2);
Button[] buttons = new Button[] { button1, button2 };


حال شما میتوانید به دو صورت زیر به شیء button1 دسترسی داشته باشید :

this.Controls["button1"].BackColor = Color.Red;
یا

buttons[0].BackColor = Color.Red;
ممنون
با اين كد هم مي شه اين كاري كه من مي خوام رو كرد
خيلي ممنون
ولي ازت مي خوام كه اگه اشاره گر هم بلد هستيد
بهم ياد بديد

rashid1368
جمعه 27 اردیبهشت 1387, 09:35 صبح
سلام بچه ها
من جواب سوالمو خودم تونستم پيدا كنم
در طول اجر ا بايد طول آرايه رو اضافه كرد
مثلا
Button[] a=new Button[2];
در جايي كه مي خوايم طول اضافه شه مي نويسيم
Array.Resize(ref a, a.Length+1)

Mahdi.Kiani
جمعه 27 اردیبهشت 1387, 11:15 صبح
سلام بچه ها
من جواب سوالمو خودم تونستم پيدا كنم
در طول اجر ا بايد طول آرايه رو اضافه كرد
مثلا
Button[] a=new Button[2];
در جايي كه مي خوايم طول اضافه شه مي نويسيم
Array.Resize(ref a, a.Length+1)
چرا از کلاس ArrayList استفاده نمی کنید که نخواهید دستی مقدار آرایه را اضافه کنید؟

البته من قبلا در مورد مشکلاتی که ArrayList می تونه ایجاد کنه مطالبی نوشته بودم و راه حلش هم استفاده از لیست ها Generic هست..

مثال




List<Button> buttonList =new List<Button>();

buttonList.Add(new Button());




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