fool66
دوشنبه 16 اردیبهشت 1392, 04:34 صبح
به نام خدا
سلام با اجازه اساتید می خوام آموزش نحوه ایجاد یک منوی راست کلیک و تولید رویداد اونو براتون بزارم امیدوارم کمی و کاستی داشت به بزرگواری خودتون ببخشید
1- برای این کار ابتدا یک کنترل دلخواه که می خواهید منوی راست کلیک روی اون اجرا بشه به فرم اضافه کنید ( من یک lable می زارم اسمش label1 هست )
2- یک شی از نوع ContextMenu در فرم خودتون ایجاد کنید به صورت زیر:
ContextMenu main = new ContextMenu();
3-به تعداد مورد نیاز شی از نوع MenuItem ایجاد می کنیم برای گزینه های راست کلیک،برای این کار به صورت زیر عمل می کنیم ( مثلا من 5 تا اضافه می کنم)
MenuItem item1 = new MenuItem("text1");
MenuItem item2 = new MenuItem("text2");
MenuItem item3 = new MenuItem("text3");
MenuItem item4 = new MenuItem("text4");
MenuItem item5 = new MenuItem("text5");
3-حالا باید این آیتم ها رو به منو انتساب بدیم در form_load به این صورت می نویسیم (اگر زیر منو نداشته باشیم):
main.MenuItems.AddRange(new MenuItem[] {item1,item2,item3,item4,item5});
ولی اگر بخواهیم
item5 زیر منوی item4 و item4 زیر منوی item3 باشه اینطور می نویسیم:
main.MenuItems.AddRange(new MenuItem[] {item1,item2,item3});
item3.MenuItems.AddRange(new MenuItem[] { item4 });
item4.MenuItems.AddRange(new MenuItem[] { item5 });
4- حال منو رو باید به کنترل اضافه شده نسبت بدیم ( همون که قسمت اول گفتم مثلا من label1 رو اضافه کردم:لبخند: ) ، در _MouseDown کنترل به این صورت می نویسیم :
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (MouseButtons == MouseButtons.Right)
{
main.Show(label1, e.Location);
}
}
5- اگر الان یک اجرا از برنامه خودتون بگیرید و می بینید روی شی که تعیین کرده اید با راست کلیک منو ظاهر می شود ولی عملی انجام نمی دهد حالا نیاز داریم که برای منوی خودمون رویداد ایجاد کنیم ( شوخی نکن نمی گفتی نمی دونستیم:لبخند: )
6- برای ایجاد رویداد در form_load خومون اینطور می نویسیم برای Itemمورد نظرمون:
آیتم_موردنظر.Click += new EventHandler(اسم_رویداد_به_دلخواه );
item2.Click += new EventHandler(item2_Click);
7- حالا برای رویدادی که نوشتیم تابع رو می نویسیم :
private void اسم_رویدادی_که_انتخاب_کردیم (object sender, EventArgs e)
{
//دستورات
}
private void item2_Click(object sender, EventArgs e)
{
MessageBox.Show("تموم شد به همین راحتی");
}
تموم شد به همین راحتی :لبخند: امیدوارم مفید باشه
سوالی داشتین بپرسین
تشکر هم زدید ممنون میشم
سلام با اجازه اساتید می خوام آموزش نحوه ایجاد یک منوی راست کلیک و تولید رویداد اونو براتون بزارم امیدوارم کمی و کاستی داشت به بزرگواری خودتون ببخشید
1- برای این کار ابتدا یک کنترل دلخواه که می خواهید منوی راست کلیک روی اون اجرا بشه به فرم اضافه کنید ( من یک lable می زارم اسمش label1 هست )
2- یک شی از نوع ContextMenu در فرم خودتون ایجاد کنید به صورت زیر:
ContextMenu main = new ContextMenu();
3-به تعداد مورد نیاز شی از نوع MenuItem ایجاد می کنیم برای گزینه های راست کلیک،برای این کار به صورت زیر عمل می کنیم ( مثلا من 5 تا اضافه می کنم)
MenuItem item1 = new MenuItem("text1");
MenuItem item2 = new MenuItem("text2");
MenuItem item3 = new MenuItem("text3");
MenuItem item4 = new MenuItem("text4");
MenuItem item5 = new MenuItem("text5");
3-حالا باید این آیتم ها رو به منو انتساب بدیم در form_load به این صورت می نویسیم (اگر زیر منو نداشته باشیم):
main.MenuItems.AddRange(new MenuItem[] {item1,item2,item3,item4,item5});
ولی اگر بخواهیم
item5 زیر منوی item4 و item4 زیر منوی item3 باشه اینطور می نویسیم:
main.MenuItems.AddRange(new MenuItem[] {item1,item2,item3});
item3.MenuItems.AddRange(new MenuItem[] { item4 });
item4.MenuItems.AddRange(new MenuItem[] { item5 });
4- حال منو رو باید به کنترل اضافه شده نسبت بدیم ( همون که قسمت اول گفتم مثلا من label1 رو اضافه کردم:لبخند: ) ، در _MouseDown کنترل به این صورت می نویسیم :
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (MouseButtons == MouseButtons.Right)
{
main.Show(label1, e.Location);
}
}
5- اگر الان یک اجرا از برنامه خودتون بگیرید و می بینید روی شی که تعیین کرده اید با راست کلیک منو ظاهر می شود ولی عملی انجام نمی دهد حالا نیاز داریم که برای منوی خودمون رویداد ایجاد کنیم ( شوخی نکن نمی گفتی نمی دونستیم:لبخند: )
6- برای ایجاد رویداد در form_load خومون اینطور می نویسیم برای Itemمورد نظرمون:
آیتم_موردنظر.Click += new EventHandler(اسم_رویداد_به_دلخواه );
item2.Click += new EventHandler(item2_Click);
7- حالا برای رویدادی که نوشتیم تابع رو می نویسیم :
private void اسم_رویدادی_که_انتخاب_کردیم (object sender, EventArgs e)
{
//دستورات
}
private void item2_Click(object sender, EventArgs e)
{
MessageBox.Show("تموم شد به همین راحتی");
}
تموم شد به همین راحتی :لبخند: امیدوارم مفید باشه
سوالی داشتین بپرسین
تشکر هم زدید ممنون میشم