PDA

View Full Version : تعریف ایونت برای کنترل ها بر اساس اسمشان



Sal_64
چهارشنبه 10 مهر 1392, 19:22 عصر
سلام
لطفا این قطعه کد ببینید
میخوام برای 3 عدد چک باکس ایونت تعریف کنم


CheckBox cb_etelaat,cb_tankhah,cb_tarh;

void add_select_columns()
{
select_columns(cb_etelaat);
select_columns(cb_tah);
select_columns(cb_tar);
}


void select_columns(CheckBox cb)
{
cb = new CheckBox();
//
//
cb.CheckedChanged +=new EventHandler(cb_CheckedChanged);
}


private void cb_CheckedChanged(object sender, EventArgs e)
{
CheckBox cx = sender as CheckBox;

if (cx.Checked == true)
{
//
}
}

اما به درستی عمل نمی کنه
تشکر

khokhan
پنج شنبه 11 مهر 1392, 07:57 صبح
سلام
لطفا این قطعه کد ببینید
میخوام برای 3 عدد چک باکس ایونت تعریف کنم

اما به درستی عمل نمی کنه
تشکر
.................................................. ...........:لبخند:

111422

مهرداد صفا
پنج شنبه 11 مهر 1392, 09:32 صبح
با سلام.
مشکل اینجاست که شما مقدار null به تابع میدهید و یک مقدار جدید به پارامتر تابع می دهید که تاثیری روی متغیر اصلی ندارد. برای درک این قضیه این تاپیک (http://barnamenevis.org/showthread.php?412151-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%DB%8C%DA%A9-%D8%B4%DB%8C-%D8%A7%D8%B2-%DA%A9%D9%84%D8%A7%D8%B3-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%A2%D8%B1%DA%AF%D9%88%D9%85%D8%A7%D9%86-%D9%85%D8%AA%D8%AF) رو ببینید.
برای حل مشکل:
1- متغیر را قبل از ارسال مقدار دهی کنید:


CheckBox cb1=new CheckBox();
...
Select_columns(cb1);
....
...
void Select_columns(CheckBox cb)
{
//dont use this following line !
//cb=new CheckBox();//dont use it.
cb.CheckedChanged+=(EventHandler)Cb_CheckChanged;
}

2- از پارامتر out برای متود استفاده کنید:


CheckBox cb1;
...
select_columns(cb1);
...
...
void select_columns(out CheckBox cb)
{
cb=new CheckBox();
cb.CheckedChanged+=(EventHandler)cb_CheckedChanged ;
}


3- از مقدار برگشتی به جای پارامتر استفاده کنید:



CheckBox cb1=Select_columns();
...
CheckBox Select_columns()
{
CheckBox cb=new CHeckBox();
cb.CheckedChanged+=(EventHandler)cb_CheckedChanged ;
return cb;
}

Sal_64
پنج شنبه 11 مهر 1392, 18:36 عصر
.................................................. ...........:لبخند:



قراره چک باکس ها هم با کد نویسی ایجاد بشن

Sal_64
پنج شنبه 11 مهر 1392, 19:01 عصر
من از پارامتر Out استفاده کردم
اما در زمان رویداد به اسم چک باکس ها دسترسی ندارم ! خروجی تهی ست



private void cb_CheckedChanged(object sender, EventArgs e)
{
CheckBox cx = sender as CheckBox;
MessageBox.Show(cx.Name.ToString());


تشکر