با سلام.
مشکل اینجاست که شما مقدار null به تابع میدهید و یک مقدار جدید به پارامتر تابع می دهید که تاثیری روی متغیر اصلی ندارد. برای درک این قضیه این تاپیک رو ببینید.
برای حل مشکل:
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;
}