View Full Version : تعریف ایونت برای کنترل ها بر اساس اسمشان
Sal_64
چهارشنبه 10 مهر 1392, 20: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, 08:57 صبح
سلام
لطفا این قطعه کد ببینید
میخوام برای 3 عدد چک باکس ایونت تعریف کنم
اما به درستی عمل نمی کنه
تشکر
.................................................. ...........:لبخند:
111422
مهرداد صفا
پنج شنبه 11 مهر 1392, 10: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, 19:36 عصر
.................................................. ...........:لبخند:
قراره چک باکس ها هم با کد نویسی ایجاد بشن
Sal_64
پنج شنبه 11 مهر 1392, 20:01 عصر
من از پارامتر Out استفاده کردم
اما در زمان رویداد به اسم چک باکس ها دسترسی ندارم ! خروجی تهی ست
private void cb_CheckedChanged(object sender, EventArgs e)
{
CheckBox cx = sender as CheckBox;
MessageBox.Show(cx.Name.ToString());
تشکر
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.