PDA

View Full Version : ساخت یه لیست از Checkbox ها و ایجاد event برای هرآیتم



emad4000
چهارشنبه 15 شهریور 1385, 16:03 عصر
سلام
من می خوام از یه پایگاه داده یه سری رکورد بخونم و به ازای هر کدوم از رکوردها یه CheckBox بسازم و بهش یه Event هم اختصاص بدم . ضمنا بنا به نیاز برنامه ام نمی خوام از CheckedListBox استفاده کنم . تا اینجای کار رو نوشتم


CheckBox temp_checkbox;
while (Field_Rdr.Read())
{
temp_checkbox = new CheckBox();
temp_checkbox.Name = "CheckBox"+ i.ToString();
temp_checkbox.AutoSize = true;
temp_checkbox.Text = Field_Rdr["Field_Name"].ToString();
temp_checkbox.Location = new Point(last_x, 15);
last_x += (temp_checkbox.Size.Width); i++;
temp_checkbox.CheckedChanged += new EventHandler(temp_checkbox_CheckedChanged);
}

ضمنا Field_Rdr اسم SqlDataReader مه.

حالا می خوام توی تابع temp_checkbox_CheckedChanged که به وسیله event فراخوانی میشه بدونم که کدوم CheckBox فراخوانی شده تا دستورات مربوطه اجرا بشن
ضمنا دستورات مربوطه برای تمام CheckBox ها یکسانه و فقط باید اون شماره CheckBox یعنی i رو بدونم که برای هرکدوم متغیره .
مسئله دیگه اینکه به فرض بخواهیم به یکی از این CheckBox ها دسترسی داشته باشیم و i رو هم داشته باشیم . در این صورت فقط اسم CheckBox رو توی یه رشته داریم . چه جوری از این رشته استفاده کنم ؟؟

ghafoori
چهارشنبه 15 شهریور 1385, 17:10 عصر
دوست عزیز کافی است یک کدی مثل این را استفاده کنی



private void temp_checkbox_CheckedChanged(object sender, EventArgs e)
{
CheckBox c;
c = (CheckBox)sender;
// code
MessageBox.Show(c.Name );
}پارامتر sender در رویدادها خود کنترل را حمل می کند

Farhad.B.S
چهارشنبه 15 شهریور 1385, 17:16 عصر
حالا می خوام توی تابع temp_checkbox_CheckedChanged که به وسیله event فراخوانی میشه بدونم که کدوم CheckBox فراخوانی شده تا دستورات مربوطه اجرا بشن


پارامتر sender که به event handler ارسال میشه حاوی شئ ایست که ایونت برایش اتفاق افتاده، با تبدیل این آبجکت به CheckBox میتونی به مشخصاتش دست پیدا کنی.



مسئله دیگه اینکه به فرض بخواهیم به یکی از این CheckBox ها دسترسی داشته باشیم و i رو هم داشته باشیم . در این صورت فقط اسم CheckBox رو توی یه رشته داریم . چه جوری از این رشته استفاده کنم ؟؟


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