PDA

View Full Version : عوض کردن گروهی یه خاصیت



hesamy2004
چهارشنبه 16 بهمن 1387, 13:40 عصر
من 20 تا label بترتیب از 1 تا 20 دارم که به 4 دسته 5 تایی تقسیم شده. هر دفعه که یک روتین اجرا میشه روی یک دستش اثر میزاره. مثلاً Label.color هر 5 تا که در یک گروه هستند رو میخوام عوض کنم.
یه راهش اینه که تو پنج خط دستور بدم که برای 20 لیبل باید 20 خط برنامه بنویسم.
تکنیک راحتترش چیه که بتونم مشخصاتشون رو تو یه حلقه For عوض کنم؟

پیشاپیش ممنون از راهنماییتون

#aliyari_C
چهارشنبه 16 بهمن 1387, 14:12 عصر
بهتر با آرایه های 2 بعدی این کار را انجام بدی!!!

hesamy2004
چهارشنبه 16 بهمن 1387, 14:55 عصر
راستش رو بخوای این کار رو انجام دادم و پروژه رو نوشتم فقط 700 خط زیاد شده باید کمش کنم.

shervin_agh67
چهارشنبه 16 بهمن 1387, 15:35 عصر
Label[] lbl1 = new Label[] { label1, label2, label3, label4, label5 };
Label[] lbl2 = new Label[] { label6, label7, label8, label9, label10 };
Label[] lbl3 = new Label[] { label11, label12, label13, label14, label15 };
Label[] lbl4 = new Label[] { label16, label17, label18, label19, label20 };
foreach (var item in lbl1)
{
item.Text = "txt";
}
foreach (var item in lbl2)
{
item.Text = "txt";
}
foreach (var item in lbl3)
{
item.Text = "txt";
}
foreach (var item in lbl4)
{
item.Text = "txt";
}

hesamy2004
چهارشنبه 16 بهمن 1387, 16:11 عصر
دستت درد نکنه شروین جان ولی فکر میکنم باز هم کدش زیاده.
دقیق یادم نیست ولیی تو دلفی میشد از دستوری استفاده کرد که دو تیکه یک لیبل رو بهم بچسبونه.
اینطوری:

For(int i=1; i<5; i++)
{
label[i].color = "Green";
label[i].text = "5";
}


دنبال همچین دستوری تو #C میگردم که کانکتنیت کنه.

mostafaaa
چهارشنبه 16 بهمن 1387, 18:13 عصر
سلام دوست من
شما میتونی ابتدا با استفاده یه حلقه تمامی کنترلهات رو توی یه آرایه یا یه لیست جنریک بریزی و بعد با استفاده از یه حلقه دیگه اعمالی رو که میخوای روشون انجام بدی!
مثلا به این شکل :

List <Label > MyControlList;

private void Form1_Load(object sender, EventArgs e)
{
MyControlList =new List<Label>() ;
foreach (Control ctrl in this.Controls)
{
if (ctrl is Label )
{
MyControlList .Add ((Label )ctrl );
}
}
}
اینجوری هم میتونی استفاده کنی :

for (int i = 0; i < 5; i++)
{
this.MyControlList[i].BackColor = Color.Red;
}

hesamy2004
پنج شنبه 17 بهمن 1387, 13:18 عصر
دستت درد نکنه مصطفی جان،

کد آخرت خیلی خوبه. فقط یه چیزی میشه راجع به خط اول برام بیشتر توضیح بدی. دقیقاً همین را باید بنویسم یا چیزهای دیگه هم هست؟ در ضمن کجای برنامه بنویسمش؟

ببخش منو چون رشته من کامپیوتر نیست و بیشتر بخاطر علاقه شخصیم برنامه نویسی میکنم. برای همینم ممکنه سئوالاتم ساده باشند.

ممنون از راهنمایی دوستان

mostafaaa
جمعه 18 بهمن 1387, 18:03 عصر
سلام دوست من
دقيقا اگه همين رو بنويسي كارت راه ميافته!!

danial82
شنبه 19 بهمن 1387, 00:05 صبح
مگه اگه جای شما بودم از 5تا Groupbox استفاده میکردم و با استفاده از دستور foreach همانطور که mostafaaa گفت فقط لیبلهای مربوطه را تغییر میدادم
درکل برای تغییر گروهی یه خاصیت از کنترلها از دستور foreach استفاده میشود

Amir Oveisi
شنبه 19 بهمن 1387, 01:04 صبح
منم پیشنهاد میکنم از container‌های مثل Panel, ComboBox و ... استفاده کنید. هر دسته رو داخل یک panel‌(مثلا) قرار میدین که میشن Control‌های اون panel.