استفاده از context menu strip در windows form

چهارشنبه 22 اردیبهشت 1395

در این مقاله ما به شما نحو ی استفاده از Context Menu Strip برای اجرای بعضی از عملیات ها در windows form را توضیح میدهیم.

استفاده از 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 اجرا کنید. 

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 8k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید