CƠ BẢN
SỰ KIỆN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Cách dùng MenuStrip trong C# (winforms)

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.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. MenuStrip trong C#

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.

winforms bai11 03 PNG

MenuStrip cho phép xây dựng Menu với các điều khiển:

  • ToolStripSeparator.
  • ToolStripMenuItem (Menu con).
  • ToolStripComboBox (ComboBox).
  • ToolStripTextBox (TextBox).

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

  • Hình thức Horizontal
  • Hình thức Vertical 90
  • Hình thức Vertical 270
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

  • Nếu là True: Biểu tượng CheckBox sẽ xuất hiện bên cạnh chuỗi Text của menu con khi người dùng nhấp chuột chọn.
  • Nếu là False: Thao tác nhấp chuột của người dùng sẽ không bị ảnh hưởng gì.

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ị.

  • None: Không hiển thị gì trên menu con
  • Text: Cho phép hiển thị chuỗi mô tả
  • Image: Cho phép hiển thị hình hoặc biểu tượng cạnh bên Text
  • ImageAndText: Cho phép hiển thị hình (biểu tượng) và chuỗi mô tả

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ị

  • None: Hiển thị bình thường
  • SizeToFit: Hiển thị đúng kích cỡ của hình hoặc biểu tượng
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.

  • Nếu là True: Cho phép hiển thị giá trị trong thuộc tính ShortcutKeyDisplayString.
  • Nếu là False: Giá trị trong thuộc tính ShortcutKeyDisplayString sẽ không hiển thị.
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

2. Ví dụ sử dụng điều khiển MenuStrip trong C#

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.

winforms bai11 02 PNG

Chương trình có các chức năng:

  • Menu chức năng: có chức năng mục Thoát dạng MenuItem. Khi người dùng nhấn chuột trái vào menu Thoát hoặc nhấn tổ hợp phím Ctrl + T sẽ thoát chương trình.

winforms bai11 04 png

  • Menu hiển thị: có dạng ComboBox chứa hai mục chọn, hiển thị thời gian hiện hành và hiển thị ngày tháng năm hiện hành.

winforms bai11 05 png

Việc đầu tiên ta cần tạo giao diện cho Form, bao gồm:

  • 2 Label để hiển thị ngày giờ hiện hành.
  • 2 Timer để lấy ngày giờ hiện hành.
  • 1 MenuStrip với 2 Item là "chứcNăngToolStripMenuItem" và "hiểnThịToolStripMenuItem". để thêm hai Item này ta vào thuộc tính Items trên MenuStrip rồi thêm 1 Item có dạng mục và 1 Item có dạng ComboBox.

winforms bai11 06 png

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.

private void timerTime_Tick(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now.Add(new TimeSpan());
        lblTime.Text = String.Format("{0:hh:mm:ss tt}", dt);
    }
private void timerDate_Tick(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now.Add(new TimeSpan());
        lblDate.Text = String.Format("{0:dd/MM/yyyy}", dt);
    }

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à "chứcNăngToolStripMenuItem" và "hiểnThịToolStripMenuItem" bây giờ chỉ cần viết sự kiện cho nó. Ở Item "hiểnThịToolStripMenuItem" sẽ viết trên sự kiện SelectedIndexChanged.

private void hiểnThịToolStripMenuItem_SelectedIndexChanged(object sender, EventArgs e)
   {
       if(hiểnThịToolStripMenuItem.SelectedItem == "Hiển thị thời gian")
       {
           timerTime.Start();
       }
       else if(hiểnThịToolStripMenuItem.SelectedItem == "Hiển thị ngày tháng")
       {
           timerDate.Start();
       }
   }

Còn Item "chứcNăngToolStripMenuItem" 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.

private void thoátToolStripMenuItem_Click(object sender, EventArgs e)
   {
       DialogResult dt = MessageBox.Show("Bạn muốn đóng chương trình", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
       if(dt == DialogResult.Yes)
       {
           Application.Exit();
       }
   }

Kết quả:

winforms bai11 07 PNG

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 Cau1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timerTime_Tick(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now.Add(new TimeSpan());
            lblTime.Text = String.Format("{0:hh:mm:ss tt}", dt);
        }

        private void timerDate_Tick(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now.Add(new TimeSpan());
            lblDate.Text = String.Format("{0:dd/MM/yyyy}", dt);
        }

        private void hiểnThịToolStripMenuItem_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(hiểnThịToolStripMenuItem.SelectedItem == "Hiển thị thời gian")
            {
                timerTime.Start();
            }
            else if(hiểnThịToolStripMenuItem.SelectedItem == "Hiển thị ngày tháng")
            {
                timerDate.Start();
            }
        }

        private void thoátToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dt = MessageBox.Show("Bạn muốn đóng chương trình", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(dt == DialogResult.Yes)
            {
                Application.Exit();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

3. Kết luận

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é !!!

Cùng chuyên mục:

Cách dùng Stack (ngắn xếp) trong C#

Cách dùng Stack (ngắn xếp) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính và phương thức của Stack…

Cách dùng Queue (hàng đợi) trong C#

Cách dùng Queue (hàng đợi) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính, phương thức của Queue, cũng…

Cách dùng Hashtable (bảng băm) trong C#

Cách dùng Hashtable (bảng băm) trong C#

Cụ thể sẽ tìm hiểu Hashtable là gì? các đặc điểm của nó, cùng với…

Sự kiện Enter và Leave trong C# Winforms

Sự kiện Enter và Leave trong C# Winforms

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Một câu hỏi được đặt ra là làm cách nào để có thể phát hiện…

Sắp xếp trộn trong C# (Merge Sort)

Sắp xếp trộn trong C# (Merge Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp xếp các ..

Sắp xếp nổi bọt trong C# (Bubble Sort)

Sắp xếp nổi bọt trong C# (Bubble Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp ...

Cách in ra hình tam giác ký tự * trong C#

Cách in ra hình tam giác ký tự * trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Cách tính tổng các số chẵn từ 1 đến N trong C#

Cách tính tổng các số chẵn từ 1 đến N trong C#

Trước khi đi vào viết chương trình, chúng ta cùng tìm hiểu qua số chẵn…

Cách tính tổng các số lẻ từ 1 đến N trong C#

Cách tính tổng các số lẻ từ 1 đến N trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tính tổng các lẻ…

Cách đếm số chữ số của một số nguyên trong C#

Cách đếm số chữ số của một số nguyên trong C#

Chúng ta cùng xem qua một số ví dụ để hiểu rõ hơn về chương…

Cách tính chu vi và diện tích hình tam giác trong C#

Cách tính chu vi và diện tích hình tam giác trong C#

Tam giác là một loại hình cơ bản trong hình học, có ba đỉnh là…

Cách tính chu vi và diện tích hình tròn trong C#

Cách tính chu vi và diện tích hình tròn trong C#

Trước khi đi vào viết chương trình tính chu vi và diện ..

Cách tính chu vi và diện tích hình chữ nhật trong C#

Cách tính chu vi và diện tích hình chữ nhật trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn ...

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách loại bỏ các ..

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tìm ...

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách xóa các ký tự…

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Trong bài viết này minh sẽ hướng dẫn các bạn cách đếm ...

Cách chuyển đổi nhị phân sang thập phân trong C#

Cách chuyển đổi nhị phân sang thập phân trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách chuyển đổi số ...

Cách chuyển đổi thập phân sang nhị phân trong C#

Cách chuyển đổi thập phân sang nhị phân trong C#

Số nhị phân là các con số có cơ số là 2. Các số nhị…

Top