Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Bạn cần tạo một menu ngữ cảnh hiển thị các item giống với một số item trong menu chính của ứng dụng. Sử dụng phương thức CloneMenu của lớp MenuItem để sao lại một phần của menu chính. | 1.1 Sử dụng một phần menu chính cho menu ngữ cảnh Ỹ Bạn cần tạo một menu ngữ cảnh hiển thị các item giống với một số item trong menu chính của ứng dụng. Sử dụng phương thức CloneMenu của lớp MenuItem để sao lại một phần của menu chính. 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 Chép các item từ menu File vào menu ngữ cảnh. foreach Menuitem mnultem in mnuFile.Menultems mnuContext.MenuItems.Add mnuItem.CloneMenu Gắn menu ngữ cảnh vào TextBox. TextBoxl.ContextMenu mnuContext private void TextBox1_MouseDown object sender System.Windows.Forms.MouseEventArgs e if e.Button MouseButtons.Right TextBox1.ContextMenu.Show TextBox1 new Point e.X e.Y private void mnuOpen_Click object sender System.EventArgs e MessageBox.Show This