PDA

View Full Version : مبتدی: آرایه ای از کنترل ها



barnamenevisy
دوشنبه 26 مهر 1389, 11:07 صبح
سلام دوستان اگه ما آرایه ای از کنترل ها رو در زمان اجرا ایجاد کنیم چه جوری میتونیم چه جوری باید تشخیص بدیم کاربر روی کدوم کنترل کلیک کرده.
می خوام به خود اندیس اون کنترل دسترسی داشته باشم نه فقط رویداد کلیکش.

mmd2009
دوشنبه 26 مهر 1389, 11:18 صبح
با سلام

دوست عزیز بخش اول سوالت که مشخصه چیه ولی بخش دوم سوال یه خورده نامفهمومه.

یعنی چی به Index اون دسترسی داشته باشی. اگر منظورت اینه میخوای Index اون دکمه رو نشون بدی خب بگو اینطوریه که راهنمایی بکنیم

موفق باشید

hojjatshariffam
دوشنبه 26 مهر 1389, 11:29 صبح
ابتدا می تونی در هنگام new کردن برای هر کدام (و برای همه) فقط یک رویداد کلید تخصیص بدی، و در رویداد کلیک از طریق sender تشخیص بدی که کدوم کلیک شده
فقط کافیه یه Switch Case بزاری و با یکی از مشخصه های کنترلت اونو تشخیص بدی
اگه فقط اندیس مد نظرته ، همون کنترل کلیک شده رو با بقیه اعضای آرایه مقایسه کن (جستجو) و اندیس اونی که تو sender قزار داره رو بدست بیار

mmhh00
دوشنبه 26 مهر 1389, 12:46 عصر
سلام


public System.Windows.Forms.Label[] lbl;


private void Form1_Load(object sender, EventArgs e)
{
for (int z = 0; z < 10; z++)
{
lbl[z] = new System.Windows.Forms.Label();
lbl[z].Name = "lbl" + z;
lbl[z].Enabled = true;
lbl[z].Visible = true;
lbl[z].Size = new System.Drawing.Size(100, 20);
lbl[z].Text = "lbl" + z;
lbl[z].TabIndex = z;
lbl[z].Click += new System.EventHandler(this.lblDrive_Click);
this.Controls.Add(lbl[z]);
}
}


private void lbl_Click(object sender, EventArgs e)
{
Label lblIndex = sender as Label;
this.Text = (lblIndex.TabIndex).ToString();
}

ار خاصیت tag هم میتونی بجای TabIndex یرای گرفتن ایندکس استفاده کنی

barnamenevisy
دوشنبه 26 مهر 1389, 17:28 عصر
سلام


public System.Windows.Forms.Label[] lbl;


private void Form1_Load(object sender, EventArgs e)
{
for (int z = 0; z < 10; z++)
{
lbl[z] = new System.Windows.Forms.Label();
lbl[z].Name = "lbl" + z;
lbl[z].Enabled = true;
lbl[z].Visible = true;
lbl[z].Size = new System.Drawing.Size(100, 20);
lbl[z].Text = "lbl" + z;
lbl[z].TabIndex = z;
lbl[z].Click += new System.EventHandler(this.lblDrive_Click);
this.Controls.Add(lbl[z]);
}
}


private void lbl_Click(object sender, EventArgs e)
{
Label lblIndex = sender as Label;
this.Text = (lblIndex.TabIndex).ToString();
}

ار خاصیت tag هم میتونی بجای TabIndex یرای گرفتن ایندکس استفاده کنی
دوست عزیز اگه ارایه ی ما دوبعدی با شه چه جوری اندیسش رو ذخیره کنم

barnamenevisy
دوشنبه 26 مهر 1389, 17:32 عصر
ابتدا می تونی در هنگام new کردن برای هر کدام (و برای همه) فقط یک رویداد کلید تخصیص بدی، و در رویداد کلیک از طریق sender تشخیص بدی که کدوم کلیک شده
فقط کافیه یه Switch Case بزاری و با یکی از مشخصه های کنترلت اونو تشخیص بدی
اگه فقط اندیس مد نظرته ، همون کنترل کلیک شده رو با بقیه اعضای آرایه مقایسه کن (جستجو) و اندیس اونی که تو sender قزار داره رو بدست بیار
می خوام باکلیک روی کنترلی که اندیس اون رو بدست اوردم یه رویداد دیگه بنویسم مثلا رو یداد mousmove اون باتون رو عوض کنم

barnamenevisy
دوشنبه 26 مهر 1389, 17:37 عصر
با سلام

دوست عزیز بخش اول سوالت که مشخصه چیه ولی بخش دوم سوال یه خورده نامفهمومه.

یعنی چی به Index اون دسترسی داشته باشی. اگر منظورت اینه میخوای Index اون دکمه رو نشون بدی خب بگو اینطوریه که راهنمایی بکنیم

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