PDA

View Full Version : سوال: چگونه بعد از یک شی متغیر بگذاریم؟



aapalireza
پنج شنبه 20 خرداد 1389, 11:27 صبح
مثلا من می‌خواهم با یک حلقه 10 button را غیر فعال کنم, من کد غلط را می نویسم که متوجه منظورم بشوید, سپس لطفا syntax درست آن را بگویید:






for(int i=1;i<11;i++)



button "i" .Enabled = false;






ممنون از شما

-------------------------
www.AlirezaWeb.com (http://www.AlirezaWeb.com)

spring69
پنج شنبه 20 خرداد 1389, 11:34 صبح
سلام
همچین مواقعی باید از حلقه foreach استفاده کنید.
به این صورت:

foreach ( btn in Controls.OfType<Button>()) {
btn.Enabled = false;
}


اینجا (http://cslearning.tripod.com/cs/beginOfcs4.htm#foreach)یکم در مورد foreach توضیح داده

aapalireza
پنج شنبه 20 خرداد 1389, 12:00 عصر
سلام
همچین مواقعی باید از حلقه foreach استفاده کنید.
به این صورت:

foreach ( btn in Controls.OfType<Button>()) {


btn.Enabled = false;
}



اینجا (http://cslearning.tripod.com/cs/beginOfcs4.htm#foreach)یکم در مورد foreach توضیح داده





ممنون از پاسختان دوست عزیز
ولی من مبتدی هستم در صورتی که می شود با همین حلقه ی foreach قطعه کدی بنویسید که مثلا از button سه تا 8 را غیر فعال کند.
ممنون

Rejnev
پنج شنبه 20 خرداد 1389, 12:18 عصر
Button[] btns=new Buttons[10];
private void Form1_load(...)
{
for(int i=0;i<btns.Lenght;i++)
{
btns[i]=new Button();
this.Controls.Add(btns[i]);
}
}
private void btnDisable_click(sender,...)
{
for(int i=3;i<8;i++)
btn[i].Enable=false;
}

اینطوری که نوشتم یعنی یک آرایه از کلیدها داریم
هنگام لود فرم اونها رو به فرم اضافه میکنیم
هنگام کلیک شدن کلید btnDisable هم از کلید 3 تا هشت آرایه رو غیر فعال میکنیم.
توجه کنید که در محیط دیزاین نمیشه آرایه ای از مثلا کلید ها ایجاد کرد و فقط باید کد نوشت. کاری که شما میخواین در حالت عادی امکان پذیر نیست. چون کلید ها اندیس ندارن.(اینجا مثل VB6 نیست که بشه آرایه ساخت.)
البته میشه با کالکشن Controls و جستجو در اون و ... یک کارایی کرد منتهی بد از بدتره
این روش سخت تره.توصیه میکنم روشتون رو عوض کنید(ازین روش ها استفاده نکنید)

sds1920
پنج شنبه 20 خرداد 1389, 16:19 عصر
شما تمام Button ها رو روي يك Panel بگذار و بعد كد زير رو بنويس

foreach(Button btn in Panel1.Controls)
btn.Eneble=false;