1. ContextMenuStrip là gì?

ContextMenuStrip là dạng Menu ngữ cảnh chỉ xuất hiện khi nhấn chuột phải. ContextMenuStrip giúp thao tác nhanh một số chức năng nào đó thay vì phải chọn control hay Menu chính, thông thường các lệnh / chức năng trên Menu ngữ cảnh sẽ đi kèm tương ứng với control tại nơi click chuột. Ví dụ: Menu ngữ cảnh khi click vào 1 hình ảnh sẽ là xem ảnh, đổi tên, copy, paste, delete… Menu ngữ cảnh khi click 1 chương trình sẽ là chạy chương trình, đổi tên, gỡ chương trình…

2. Tạo ContextMenuStrip trong Visual Studio
Tại ToolBox nhấp đôi vào Control ContextMenuStrip để tiến hành tạo mới. Vì ContextMenuStrip chỉ xuất hiện khi nhấp chuột phải nên ContextMenuStrip sẽ không nằm trên Form trong trình thiết kế như các control khác, thay vào đó nó được nằm ở thanh công cụ bên dưới, khi nhấp vào nó sẽ được thể hiện trên Form. Trong hình bên dưới là ContextMenuStrip được tạo với 3 lệnh là Copy, Cut và Paste; Để tạo thêm lệnh mới tiến hành gõ vào “Type here”. Ta thấy trên mỗi lệnh đều có 1 Icon đi kèm, icon này được thiết lập tại thuộc tính Image trong hộp Properties.
Tìm hiểu Control ContextMenuStrip Lập trình Windows Form Csharp | MicrosoftTech.Net
3. Ví dụ minh họa
Ví dụ bên dưới cho thấy được cách thức làm việc của ContextMenuStrip với các lệnh CopyCut và Paste. Trước tiên, ContextMenuStrip chỉ xuất hiện trên những Control đã chỉ định trước nên ta phải khai báo Menu ngữ cảnh trên từng đối tượng muốn sử dụng nó. Ở đây, ví dụ khai báo Menu ngữ cảnh cho 3 TextBox:

textBox1.ContextMenuStrip = contextMenuStrip1;
textBox2.ContextMenuStrip = contextMenuStrip1;
textBox3.ContextMenuStrip = contextMenuStrip1;

Trong ví dụ này sẽ dùng Menu ngữ cảnh để thực hiện việc copy dữ liệu từ TextBox này qua TextBox khác, các lệnh copy sẽ thực hiện dựa vào clipboard; Chúng ta sử dụng biến focus (dòng 61) và event TextboxMouseClick để xác định chuột đang nằm trên Textbox nào. Sự kiện này sẽ áp dụng cho cả 3 Textbox.
Tiếp theo thiết lập sự kiện Click cho mỗi lệnh trên Menu, thông qua biến focus để biết lệnh đó sẽ tác động vào vào TextBox. Khi khởi động chương trình chúng ta thiết lập Clipboard.Clear() để xóa bỏ bộ nhớ đệm. Ban đầu vì bộ đệm đang rỗng nên Menu Paste sẽ không được enable (như hình ở Form trên). Sau khi có thao tác Copy hay Cut thì Menu Paste sẽ được Enable.
Tìm hiểu Control ContextMenuStrip Lập trình Windows Form Csharp | MicrosoftTech.Net

MicrosoftTech.Net

Advertisements

Posted on November 3, 2012, in Csharp, Win Form and tagged , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: