View Full Version : تعریف رویداد دبل کلیک
vahid2112
سه شنبه 17 بهمن 1391, 21:39 عصر
سلام
چطور برای یوزرکنترلم رویداد دبل کلیک تعریف کنم؟
vahid2112
سه شنبه 17 بهمن 1391, 21:48 عصر
اینم یه پروژه مثال:
99639
Mahmoud.Afrad
سه شنبه 17 بهمن 1391, 22:42 عصر
منظورتون دابل کلیک روی لیبل هاست؟
اگر بله :
راه آسونش اینه که Modifiers لیبل ها رو روی Protected Internal قرار بدید و در فرم برای هر لیبل رویداد بنویسید:
public Form1()
{
InitializeComponent();
UserControl1 u = new UserControl1();
this.Controls.Add(u);
foreach (Control c in u.Controls)
{
if (c is Label)
{
c.DoubleClick += new EventHandler(c_DoubleClick);
}
}
}
void c_DoubleClick(object sender, EventArgs e)
{
// your code here
// example
Label lbl = sender as Label;
MessageBox.Show(lbl.Text);
}
راه سخت ترش هم ایجاد رویداد جدیدی برای یوزرکنترل هست. در این روش Modifiers لیبل ها روی Private باقی میمونه.
یک دلیگیت با پارامتر مناسب و یک ایونت از روی آن ایجاد کنید.
در سازنده یوزرکنترل به همه لیبل ها یک رویداد دابل کلیک نسبت بدید و در رویدادگردانش ، رویداد جدیدی که تعریف کردید را Raise کنید.
کد کلاس یوزرکنترل به اینصورت باید در بیاد:
public partial class UserControl1 : UserControl
{
public delegate void ItemDoubleClick_EventHandler(object sender, EventArgs e);
public event ItemDoubleClick_EventHandler ItemDoubleClick;
public UserControl1()
{
InitializeComponent();
foreach (Control c in this.Controls)
{
if (c is Label)
{
c.DoubleClick += new EventHandler(c_DoubleClick);
}
}
}
void c_DoubleClick(object sender, EventArgs e)
{
if (ItemDoubleClick != null)
{
this.ItemDoubleClick(sender, e);
}
}
}
حالا به رویدادهای یوزرکنترل رویدادی به نام ItemDoubleClick اضافه شده که از طریق sender به لیبل دسترسی دارید.
کد فرم رو به اینصورت اصلاح کنید:
public Form1()
{
InitializeComponent();
UserControl1 u = new UserControl1();
this.Controls.Add(u);
u.ItemDoubleClick +=new UserControl1.ItemDoubleClick_EventHandler(u_ItemDo ubleClick);
}
void u_ItemDoubleClick(object sender, EventArgs e)
{
// your code here
// example
Label lbl = sender as Label;
MessageBox.Show(lbl.Text);
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.