-
- Tổng tiền thanh toán:
Khi mua hàng tại website của chúng tôi, quý khách sẽ được:
Trong bài viết này mình sẽ hướng dẫn sử dụng điều khiển MenuStrip trong C#, đây là một điều khiển rất quan trọng trong lập trình ứng dụng với winforms, vì mỗi ứng dụng đều có menu để người dùng có thể lựa chọn.
Chúng ta sẽ cùng nhau tìm hiểu về công dụng cũng như các thuộc tính và phương thức, sự kiện của MenuStrip. Sau đó mình sẽ thực hiện một vài ví dụ áp dụng MenuStrip để các bạn hiểu rõ hơn.
MenuStrip là một điều khiển cho phép lập trình viên xây dựng hệ thống Menu trên Form. Menu có thể xây dựng ở dạng một cấp hoặc nhiều cấp.
MenuStrip cho phép xây dựng Menu với các điều khiển:
Một số thuộc tính thường dùng của MenuStrip:
Thuộc tính | Mô tả |
---|---|
TextDirection |
Chọn hình thức trình bày Menu
|
Items | Thêm các menu con. Kiểu menu có thể chọn một trong 4 dạng: MenuItem, ComboBox, TextBox, Seperator |
RightToLeft | Mang giá trị Yes hoặc No. Nếu là Yes thì sẽ trình bày menu từ phải qua trái. Nếu là No thì trình bày menu từ trái qua phải |
Checked | Mang giá trị True hoặc False. Nếu là giá trị True thì hiển thị biểu tượng CheckBox bên cạnh chuỗi Text. Nếu là False thì không hiện biểu tượng CheckBox |
CheckOnClick |
Mang giá trị True hoặc False
|
CheckState |
Cho biết trang thái của CheckBox trên menu con. Có 3 trạng thái: Unchecked, Checked, Indeterminate. *Lưu ý: Trạng thái Indeterminate chỉ có hiệu lực khi thuộc tính Checked là true. |
DisplayStyle |
Hình thứ trình bày của menu con có 4 kiểu hiển thị.
|
Image |
Hình ảnh xuất hiện bên cạnh chuỗi Text |
ImageScaling |
Kiểu trình bày của hình trong thuộc tính Image. Có thể thiết lập một trong hai giá trị
|
ShortcutKeyDisplayString | Chuỗi trình bày ứng với phím tắt mô tả cho menu đó |
ShortcutKeys | Tổ hợp phím tắt ứng với menu |
ShowShortcutKeys |
Mang giá trị True hoặc False.
|
Text | Chuỗi ký tự hiển thị trên menu |
ToolTipText | Chuỗi ký tự hiển thị khi rê chuột vào menu |
Các sự kiện thường dùng của MenuItem:
Sự kiện | Mô tả |
---|---|
CheckedChange | Phát sinh khi trạng thái (CheckState) của CheckBox thay đổi |
Click | Phát sinh khi người dùng nhấp chuột vào menu |
Trong ví dụ này mình sẽ viết một chương trình trong đó có sử dụng MenuStrip và kết hợp thêm Timer để hiển thị ngày giờ hiện hành. Cụ thể mình sẽ tạo giao diện cho Form như dưới đây và thực hiện một số chức năng tương ứng.
Chương trình có các chức năng:
Việc đầu tiên ta cần tạo giao diện cho Form, bao gồm:
Sau khi đã tạo giao diện cho Form và thêm một số điều khiển cần thiết, bây giờ ta sẽ đi xử lý sự kiện.
Bước 1: Xử lý sự kiện Tick cho hai Timer để lấy ngày giờ hiện hành. Chú ý rằng trong Timer thuộc tính Enabled mặc định ở trạng thái False, vì vậy nó sẽ không hiển thị ngay khi chạy chương trình. Khi chúng ta chọn hiển thị ở Menu thì khi đó mới Start Timer lên.
Bước 2: Xử lý sự kiện cho Menu với chức năng là khi người dùng chọn hiển thị ngày hoặc giờ thì ngày giờ hiện hành sẽ được hiển thị trên Label. Và khi người dùng chọn Thoát hoặc nhấn tổ hợp Ctrl + T thig sẽ đóng chương trình.
Khi tạo Menu ta đã tạo hai Item là "mnuChucNang" và "mnuHienThi" bây giờ chỉ cần viết sự kiện cho nó. Ở Item "mnuHienThi" sẽ viết trên sự kiện SelectedIndexChanged.
Còn Item "mnuThoat" ta sẽ viết trên sự kiện Click, bằng cách nhấn đúp chuột vào chức năng Thoát.
Full Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Bai_11_01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void timer_Time_Tick(object sender, EventArgs e) { DateTime dt = DateTime.Now.Add(new TimeSpan()); lblTime.Text = string.Format("{0:hh:mm:ss tt}", dt); } private void timer_Date_Tick(object sender, EventArgs e) { DateTime dt = DateTime.Now.Add(new TimeSpan()); lblNgay.Text = string.Format("{0:dd/MM/yyyy}", dt); } private void mnuHienThi_SelectedIndexChanged(object sender, EventArgs e) { if (mnuHienThi.SelectedItem== "Hiển thị thời gian") { timer_Time.Start(); } else if (mnuHienThi.SelectedItem== "Hiển thị ngày tháng") { timer_Date.Start(); } } private void mnuThoat_Click(object sender, EventArgs e) { DialogResult dt = MessageBox.Show("Ban co muon dong chuong trinh", "Thong bao", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dt==DialogResult.Yes) { Application.Exit(); } } } }
Như vậy là chúng ta đã tìm hiểu xong công dụng của MenuStrip cũng như các thuộc tính và sự kiện của nó. Đây là một điều khiển rất quan trong trong việc tạo các ứng dụng, vì đa số các ứng dùng đều sử dụng menu. Vây nên các bạn hãy luyện tập thật nhiều để thành thạo nó nhé. Ở bài tiếp theo mình sẽ giới thiệu đến các bạn một điều khiển Menu nữa là ContextMenuStrip, các bạn chú ý theo dõi nhé !!!