PDA

View Full Version : سوال: رویداد کلیک برای 120 دکمه



AEbrahimi1377
شنبه 11 مرداد 1393, 10:33 صبح
سلام
من می خوام یک متد در رویداد کلیک 120 دکمه با پارامتر های متفاوت اجرا بشه
آیا باید با دوبار کلیک روی هر دکمه، رویداد کلیک رو برای اون ایجاد کنم یا راه دیگه ای هم هست؟؟؟

elec60
شنبه 11 مرداد 1393, 11:06 صبح
سلام،
همه دكمه ها رو با نگه داشتن Ctrl انتخاب كن و تو قسمت events ايونت Click رو انتخاب كن و اسم متد رو وارد كن و يا دابل كليك كن تا متد ساخته بشه.

nunegandom
شنبه 11 مرداد 1393, 11:14 صبح
سلام
میری توی رویداد کلیک یکیشون و با استفاده از sender میتونی بفهمی که این کدوم دکمه هستش
رویداد کلیک تمام دکمه هاتو روی این متود جدید set کن

مثال:

private void button2_Click(object sender, EventArgs e) {
if (sender is TextBox)
{
textBox1.Text = (sender as TextBox).Name;
}
if (sender is Button)
{
textBox1.Text = (sender as Button).Name;
}
}

این ست کردن رویداد کلیک

Button MyButton = new Button(); MyButton.Click += MyButton_Click;
}


void MyButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Done");
}

AEbrahimi1377
شنبه 11 مرداد 1393, 11:42 صبح
سلام،
همه دكمه ها رو با نگه داشتن Ctrl انتخاب كن و تو قسمت events ايونت Click رو انتخاب كن و اسم متد رو وارد كن و يا دابل كليك كن تا متد ساخته بشه.

این کار می کنه ولی نه برای فرستادن پارامتر های متفاوت

AEbrahimi1377
شنبه 11 مرداد 1393, 12:13 عصر
سلام
میری توی رویداد کلیک یکیشون و با استفاده از sender میتونی بفهمی که این کدوم دکمه هستش
رویداد کلیک تمام دکمه هاتو روی این متود جدید set کن


متوجه نشدم میشه بیشتر توضیح بدین
منظور من اینه که نمی خوام برای هر 120 دکمه رویداد کلیک ایجاد کنم، چون هم حجم کد زیاد می شه و هم زمان زیادی می بره
ممنون

aliagamon
شنبه 11 مرداد 1393, 12:52 عصر
خیلی راحت با اسفاده از یه حلقه ی foreach میتونید رویداد همه دکمه هارو روی یه تابع ست کنید ... بعد با استفاده از sender و کمی خلاقیت (میتونید از کلی switch case استفاده کنید یا اینکه خلاقانه بیاین از button ارث ببرین یه خاصیت برای کارتون بهش اضافه کنید مثلا اگه هر button باید یک پیغام بده میتونید یه پروپرتی برای messge ایجاد کنید ... )

AEbrahimi1377
شنبه 11 مرداد 1393, 12:58 عصر
خیلی راحت با اسفاده از یه حلقه ی foreach میتونید رویداد همه دکمه هارو روی یه تابع ست کنید ... بعد با استفاده از sender و کمی خلاقیت (میتونید از کلی switch case استفاده کنید یا اینکه خلاقانه بیاین از button ارث ببرین یه خاصیت برای کارتون بهش اضافه کنید مثلا اگه هر button باید یک پیغام بده میتونید یه پروپرتی برای messge ایجاد کنید ... )

میشه اینایی رو که گفتین کدشو بذارین؟

khokhan
شنبه 11 مرداد 1393, 13:09 عصر
میشه اینایی رو که گفتین کدشو بذارین؟
اگه دگمه هارو از طریق کد نویسی بوجود بیاری همش سه خط کد بیشتر نمی شه:لبخند:

AEbrahimi1377
شنبه 11 مرداد 1393, 13:45 عصر
اگه دگمه هارو از طریق کد نویسی بوجود بیاری همش سه خط کد بیشتر نمی شه:لبخند:

دکمه هارو توی design mode درست کردم و مشکل اینه که دکمه ها کامپوننت های تلریک هستن و نمیشه خصوصیات همشون رو یه جا تغییر داد و من زمان زیادی رو صرف تغییر خصوصیات تک تک اونا و مکان اونا توی فرم کردم
پروژه ای که روش کار می کنم، جدول تناوبی هست
راه دیگه ای جز ایجاد رویداد کلیک برای تک تک اونا نیست؟؟؟

khokhan
شنبه 11 مرداد 1393, 15:39 عصر
دکمه هارو توی design mode درست کردم و مشکل اینه که دکمه ها کامپوننت های تلریک هستن و نمیشه خصوصیات همشون رو یه جا تغییر داد و من زمان زیادی رو صرف تغییر خصوصیات تک تک اونا و مکان اونا توی فرم کردم
پروژه ای که روش کار می کنم، جدول تناوبی هست
راه دیگه ای جز ایجاد رویداد کلیک برای تک تک اونا نیست؟؟؟

یه حلقه سویچ در رویداد کلیک اولین باتن قرار بده بر اساس نام باتن و بعد همه باتن ها رو توش چک کن :


var btn = (Button)sender; switch (btn.Name)
{
case "button1":
MessageBox.Show(btn.Name+"انتخاب شما "); break;
case "button2":
MessageBox.Show(btn.Name+"انتخاب شما "); break;

case "button3":
MessageBox.Show(btn.Name+"انتخاب شما "); break;

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