PDA

View Full Version : آموزش: ایجاد منوی راست کلیک برای کنترل ها و ایجاد رویداد آن با کد



fool66
دوشنبه 16 اردیبهشت 1392, 03: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("تموم شد به همین راحتی");
}
تموم شد به همین راحتی :لبخند: امیدوارم مفید باشه
سوالی داشتین بپرسین
تشکر هم زدید ممنون میشم

ploto_m
یک شنبه 24 شهریور 1392, 11:12 صبح
می خوام تو منوی کلیک راست فقط یه combobox بزارم واونو بایند کنم به دیتا بیس
منو هم موقع کلیک راست روی یک دکمه باز میشه
تو فرم لود اینو نوشتم نشد

toolStripComboBox1.ComboBox.DataSource = fieldcontroller.SelectAll();
toolStripComboBox1.ComboBox.DisplayMember = "FieldName";
toolStripComboBox1.ComboBox.ValueMember = "FieldId";
تو دکمه هم نوشتم نشد نمیدونم اشکال کار کجاست