CONTEXTMENUSTRIP

1.     ContextMenuStrip

ContextMenuStrip dùng đ thiết kế menu Popup (menu ng cnh). Menu Popup là menu dng như loi menu khi ngưi dùng nhn chut phi vào màn hình Desktop thì hin lên mt menu. Trong lp trình ng dng Windows Form, menu Popup s xut hin khi ngưi dùng nhn chut phi vào các điu khin như: Form, Label, Button, TextBox,...

Phn ln các điu khin trong ca s ToolBox đu h tr thuc tính ContextMenuStrip. Do đó mun menu Popup xut hin trên điu khin nào thì cn khai báo thuc tính ContextMenuStrip ca điu khin đó là mt điu khin ContextMenuStrip.

Bảng 2.35. Một số thuộc tính thường dùng của ContextMenuStrip

Thuộc tính

Mô tả

Items

Thêm các menu con, kiểu menu con thuộc mộ trong bốn dạng: Separator, MenuItem, ComboBox, TextBox.

Lập trình viên có thể thêm các menu trong cửa sổ Items Collection Edition. Cửa sổ Items Collection Edition có thể mở lên bằng cách nhấp chuột trái vào biểu tượng của thuộc tính Items trong cửa sổ Properties.

RightToLeft

Mang giá trị true: Trình bày menu từ phải qua trái

Mang giá trị False: Trình bày menu trừ trái qua phải

Đ ContextMenuStrip xut hin khi ngưi dùng nhp chut phi vào Form thì phi thiết lp thuc tính ContextMenuStrip ca Form là tên ca control ConTextMenuStrip

Ví d tên control ContextMenuStrip ca bn là contextMenuStrip1, thì thuc tính ContextMenuStrip trong Form có tên là contextMenuStrip1

winforms bai11 01 PNG

Hình 2.70. Điều khiển ContextMenuStrip

Trong ContextMenuStrip có mt s kin rt ph biến đó chính là Click, đ cài đt nó ta nhp đúp chut vào s kin thì t đng nó s chuyn đến ca s viết Code ca bn.

2.     Ví dụ sử dụng điều khiển ContextMenuStrip

Trong ví d này s viết mt chương trình s dng ContextMenuStrip đ mô t công dng ca nó. C th s to Form như mu, sau đó viết mt s chc năng cho chương trình.

winforms bai12 04 PNG

Hình 2.71. Giao diện dùng ContextMenuStrip

Yêu cu: To ContextMenuStrip cho Panel cha Label ngày tháng và thi gian. Khi nhn chut phi lên Form thì mt Menu s hin th ra các chc năng như hình dưi đây.

winforms bai12 02 png

Hình 2.72. Hiển thị ContextMenuStrip

·       Khi chn mc "MenuExit" hoc nhn t hp phím Ctrl + T thì chương trình s đóng.

·       Khi chn mc "Display Time" thì hin th thi gian hin hành trên Label "Thi Gian".

·       Khi chn mc "Display Date" thì hin th ngày tháng năm hin hành trên Label "Ngày Tháng Năm".

Vic đu tiên ta cn to giao din cho Form tương t hình mu, bao gm:

·       2 Label đ hin th ngày tháng năm và thi gian hin hành.

·       1 ContextMenuStrip đ to Menu khi nhn chut phi lên Form. Trong ContextMenuStrip ta s to 3 Items thuc tính Items:

winforms bai12 06 PNG

Hình 2.73. Quản lý ContextMenuStrip

Sau khi to giao din và thêm các Items trong ContextMenuStrip, bây gi ta s đi x lý ln lưt các s kin.

c 1: X lý s kiClick cho Item displayTimeToolStripMenuItem, vi chc năng khi ngưi dùng chn s hin th thi gian hin hành lên Label.

private void displayTimeToolStripMenuItem_Click(object sender, EventArgs e)

    {

        DateTime dt = DateTime.Now.Add(new TimeSpan());

        lblTime.Text = String.Format("{0:hh:mm:ss tt}", dt);

    }

c 2: X lý s kiClick cho Item displayDateToolStripMenuItem, vi chc năng khi ngưi dùng chn s hin th ngày tháng năm hin hành trên Label.

private void displayDateToolStripMenuItem_Click(object sender, EventArgs e)

    {

        DateTime dt = DateTime.Now.Add(new TimeSpan());

        lblDate.Text = String.Format("{0:dd/MM/yyyy}", dt);

    }

c 3: X lý s kiClick cho Item menuExitToolStripMenuItem, vi chc năng khi ngưi dùng chn thì đóng chương trình.

private void menuExitToolStripMenuItem_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 bai12 05 PNG

Hình 2.74. Kết quả ứng dụng ContextMenuStrip

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 Cau2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void displayTimeToolStripMenuItem_Click(object sender, EventArgs e)

        {

            DateTime dt = DateTime.Now.Add(new TimeSpan());

            lblTime.Text = String.Format("{0:hh:mm:ss tt}", dt);

        }

        private void displayDateToolStripMenuItem_Click(object sender, EventArgs e)

        {

            DateTime dt = DateTime.Now.Add(new TimeSpan());

            lblDate.Text = String.Format("{0:dd/MM/yyyy}", dt);

        }

 

        private void menuExitToolStripMenuItem_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();

            }

        }

    }

}

3.     Bài tập

ContextMenuStrip là mt điu khin cũng khá quan trng nên luyn tp tht nhiu đ thành tho.