استفاده از context menu strip در windows form
چهارشنبه 22 اردیبهشت 1395در این مقاله ما به شما نحو ی استفاده از Context Menu Strip برای اجرای بعضی از عملیات ها در windows form را توضیح میدهیم.
اگر هیچ چیز درباره ی context menu strip نمیدانید ما به شما اکیدا پیشنهاد میکنیم که مقاله زیر در مورد ContextMenuStrip را مطالعه کنید. ما در این مقاله به روشنی ، نحوه ی استفاده از ContextMenuStrip در windows form را توضیح داده ایم.
نحوه ی ایجاد Context MenuStrip در windows form
چیست؟Context MenuStrip
یک context menu همان menu ای است وقتی بر روی ناحیه ای یا فرمی کلیک راست میکنید، ظاهر میشود یا به عبارتی ساده تر context menu، منویی است که هر جا در کامپیوتر کلیک راست میکنید ظاهر شود.
در این قسمت یک مثال ساده از context menu آورده ایم.
نحوه ی ایجاد :
یک context menustrip به فرم مورد نظر خود اضافه کنید.
به menu مربوط به کامپوننت ها(Menu & ToolBar ) بروید و از آنجا یک context menustrip اضافه کنید.
اگر بر روی آن دابل کلیک کنید، خواهید دید که در فرمcontext menu strip اضافه شده است.
بدین صورت context menu به فرم اضافه میشود.
یک MenuStrip item ایجاد کنید و نام آن را Delete میگذاریم. مانند زیر :
حال میخواهیم نحوه ی حذف کردن یک رکورد از DataGridView با استفاده از ContextMenuStrip شرح دهیم.
قبل از اینکار یک پروژه سیستمی ایجاد میکنیم و یک DataGridView برای نمایش اطلاعات اضافه میکنیم و در آن یک ContextMenuStrip به شکل زیر قرار میدهیم.
حال یک منو با نام Delete به menustrip اضافه میکنیم.
کد زیر را برای پر کردن datagrid view مینویسیم:
1. public partial class Form1: Form { 2. SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Students;User ID=sa;Password=123"); 3. int Index = 0;\\ 4. Declaring a variable 5. SqlDataAdapter da; 6. public Form1() { 7. InitializeComponent(); 8. } 9. private void Form1_Load(object sender, EventArgs e) { 10. filldata();\\ 11. calling the method to fill the datagrid. 12. } 13. public void filldata() { 14. da = new SqlDataAdapter("select * from tbl_studentdetails", con); 15. DataTable dt = new DataTable(); 16. da.Fill(dt); 17. dataGridView1.DataSource = dt; 18. } 19. }
با توجه به کد بالا datagrid به صورت زیر پر میشود:
حال برای نشان دادن متن داخل منو، برای رویداد راست کلیک (right click) آن ، کدها ی زیر را مینویسیم:
1. private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { 2. if (e.Button == MouseButtons.Right) { 3. this.dataGridView1.Rows[e.RowIndex].Selected = true; 4. this.Index = e.RowIndex; 5. this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells[1]; 6. this.contextMenuStrip1.Show(this.dataGridView1, e.Location); 7. contextMenuStrip1.Show(Cursor.Position); 8. } 9. }
حال برای datagrid در قسمت property برای SelectionMode گزینه ی FullRowSelect را انتخاب میکنیم.
با انتخاب این گزینه ، هنگامیکه یک سلول از datagrid انتخاب شود تمام row مورد نظر به صورت خودکار به حالت "انتخاب" در می آید.
برای حذف کردن رکورد باید روی "Delete" دابل کلیلک شود. برای این کار از کد زیر استفاده میکنیم.
1. private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { 2. DialogResult dr = MessageBox.Show("آیا برای حذف این رکورد مطمئن هستید؟", "confirmation", MessageBoxButtons.YesNo); 3. if (dr == DialogResult.Yes) { 4. string studentId = dataGridView1.Rows[Index].Cells[1].Value.ToString();\\ 5. getting the id by index of row. 6. SqlCommand cmd = new SqlCommand("delete from tbl_studentdetails where RollNo='" + studentId + "'", con); 7. con.Open(); 8. int result = cmd.ExecuteNonQuery(); 9. if (result == 1) { 10. MessageBox.Show("رکورد با موفقیت حذف شد"); 11. filldata(); 12. } else { 13. MessageBox.Show("رکورد حذف نشد... مجددا تلاش کنید."); 14. } 15. } 16. }
پس هنگام حذف کردن ، رکورد موردنظر به حالت زیر در خواهد آمد:
هنگامیکه روی یک سطر راست کلیک کنیم ابتدا تمام سطر انتخاب میشود و سپس منو "Delete" نمایش داده میشود.
هنگامیکه روی Delete کلیک میکنید برنامه از شما میخواهد که درخواست خود برای حذف رکورد را تایید کنید.
وقتی شما روی دکمه ی " ok " کلیک میکنید :
حال اگربه جدول دقت کنید رکورد مورد نظر با موفقیت حذف شده است.
ما با این روش توانستیم یک گزینه ی ساده برای حذف رکورد با استفاده از ContextMenuStrip بسازیم.شما با همین روش میتوانید هر عملی دیگری را با استفاده از ContextMenuStrip اجرا کنید.
- C#.net
- 8k بازدید
- 1 تشکر