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

214
Chương 6: Windows Form

Thực ra, logic dùng để hiển thị menu ngữ cảnh hoàn toàn giống nhau, không quan tâm đến
điều kiểm gì. Mọi điều kiểm đều hỗ trợ thuộc tính

ContextMenu

(được thừa kế từ lớp cơ sở

Control

), nghĩa là bạn có thể dễ dàng viết được một phương thức thụ lý sự kiện chung để hiển

thị các menu ngữ cảnh cho tất cả các điều kiểm.
Ví dụ, xét một form gồm một

Label

, một

PictureBox

, và một

TextBox

. Bạn có thể viết một

phương thức thụ lý sự kiện

MouseDown

cho tất cả các đối tượng này. Đoạn mã dưới đây kết nối

tất cả các sự kiện này vào một phương thức thụ lý sự kiện tên là

Control_MouseDown

:

this.label1.MouseDown += new MouseEventHandler(this.Control_MouseDown);

this.pictureBox1.MouseDown += new

MouseEventHandler(this.Control_MouseDown);

this.textBox1.MouseDown += new MouseEventHandler(this.Control_MouseDown);

Phần mã thụ lý sự kiện hoàn toàn được dùng chung. Nó chỉ ép kiểu

sender

thành

Control

,

kiểm tra menu ngữ cảnh, và hiển thị nó.

private void Control_MouseDown(object sender,

System.Windows.Forms.MouseEventArgs e) {

if (e.Button == MouseButtons.Right) {

// Lấy điều kiểm nguồn.

Control ctrl = (Control)sender;

if (ctrl.ContextMenu != null) {

// Hiển thị menu ngữ cảnh.

ctrl.ContextMenu.Show(ctrl, new Point(e.X, e.Y));

}

}

}

12.

12.

S d ng m t ph n menu chính cho menu ng c nh

ử ụ

ữ ả

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.

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.