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.