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.

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 Copy, Cut 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.


Trong một richTexBox, em chỉ muốn chọn một từ hoặc cụm từ rồi click chuột phải cho nó hiện ra contextMenuTrip để chọn làm tiếp tác vụ nào đó(VD copy,..) .Em chọn từ(cụm từ) và click chuột phải thì contextMenu hiện ra nhưng khi em bỏ chọn từ(cụm từ) đó và click chuột phải thì contextMenu vẫn hiện ra.Cho em hỏi là mình có cách nào khắc phục ko,em làm mãi mà ko đc.:D
Đây là bản demo của em : http://www.mediafire.com/?7297yktqyb9b45g