CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 215

215

Chương 6: Windows Form

Trong nhiều ứng dụng, menu ngữ cảnh của một điều kiểm sao lại một phần của menu chính.
Tuy nhiên, .NET không cho phép bạn tạo một đối tượng

MenuItem

cùng lúc nằm trong nhiều

menu.
Giải pháp là tạo bản sao của một phần menu chính bằng phương thức

CloneMenu

. Phương thức

này không chỉ chép các item

MenuItem

(và các submenu), mà còn đăng ký mỗi đối tượng

MenuItem

với cùng phương thức thụ lý sự kiện. Do đó, khi người dùng nhắp vào một item

trong menu ngữ cảnh (bản sao), phương thức thụ lý sự kiện tương ứng sẽ được thực thi như
thể người dùng nhắp vào item đó trong menu chính.
Ví dụ, xét ứng dụng thử nghiệm trong hình 6.6. Trong ví dụ này, menu ngữ cảnh cho

TextBox

hiển thị các item giống như trong menu File. Đây chính là bản sao của các đối tượng

MenuItem

, nhưng khi người dùng nhắp vào một item, phương thức thụ lý sự kiện tương ứng sẽ

được thực thi.

Hình 6.6 Chép một phần menu chính vào menu ngữ cảnh

Dưới đây là phần mã cho form để tạo ví dụ này. Nó sẽ sao lại các item trong menu chính khi
form được nạp (đáng tiếc là không thể thao tác với các item bản sao lúc thiết kế).

using System;

using System.Windows.Forms;

using System.Drawing;

public class ContextMenuCopy : System.Windows.Forms.Form {

// (Bỏ qua phần mã designer.)

private void ContextMenuCopy_Load(object sender,

System.EventArgs e) {

ContextMenu mnuContext = new ContextMenu();

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.