C# 菜单

来源:互联网 发布:知乎一小时 epub 编辑:程序博客网 时间:2024/05/16 05:18

菜单

一、  菜单(Menu类)。

菜单是大多数传统Microsoft Windows应用程序的重点。菜单位于窗体标题栏的下方,它实际上列出了程序所能完成的每一项功能——剪切和粘贴照样的简单操作。即使一个应用程序支持大量功能键快捷方式,这些快捷方式一般也是重复了菜单项。

               类层次图

                  Object

                    ↓

              MarshalByRefObject

                    ↓

                Component

                    ↓

                   Menu(抽象类)    

          ↓        ↓               ↓

      MainMenu类  ContextMenu类  MenuItem   

     (主菜单)   (快捷菜单)    (菜单项)

要想像一个窗体附加特定的菜单,需要将MainMenu对象赋给窗体Menu属性。

 

例:      this.Menu = new MainMenu();

 

1、     主菜单(MainMenu)

一个菜单一定要用于自己的主框架,而MainMenu就等于是菜单中的主框架。

我们在使用菜单时必须有这么一个框架才可以使用。

 

类型

属性

访问方式

说明

Menu

MenuItems

读/写

获取或设置菜单项的集合。

 

MenuItems下有一个叫做Add的方法是专门用来往指定的主菜单上加载菜单项使用的,这个方法除了接收字符串类型的参数用来设置菜单项的名称以外,还接收一个菜单项的对象。一个菜单是由一个主菜单和N个菜单项组成的。

 

2、   菜单项(MenuItem类)

菜单项是与主菜单分离的,每个菜单项都由自己的独立体。

2.1、菜单项的构造函数。

2.1.1、MenuItem();

2.1.2、MenuItem(string strText);         

//设置菜单项名称。

2.1.3、MenuItem(string strText,EventArgs e); 

//设置菜单项名称与点击事件。

2.1.4、MenuItem(string strText,EventArgs e,shortcut sc);

//设置菜单项的快捷键

2.1.5、MenuItem(string strText,MenuItem[] mi);

//添加一组菜单项

 

2.2、菜单项属性。

类型

属性

访问方式

说明

Shortcut

Shortcut

读/写

获取或设置菜单项快键。

Bool

Showshortcut

读/写

获取或设置菜单项快键是否在窗体内显示。

Bool

Visible

读/写

获取或设置菜单项是否可见。

Bool

Enabled

读/写

获取或设置是否启用菜单项。

Bool

DefaultItem

读/写

获取或设置本菜单项是否为默认菜单项。

Bool

Checked

读/写

获取或设置菜单项具有复选行为(注:不允许为顶级菜单项设置此属性)。

 

2.2、菜单项事件。

事件

方法

委托

参数

Click

OnClick

EventHandler

EventArgs

Popup

OnPopup

EventHandler

EventArgs

Select

OnSelect

EventHandler

EventArgs

Popup事件是在显示菜单项的菜单项列表时触发的事件,Select事件是当鼠标经过菜单项时触发的事件。

 

例:

using System;

using System.Drawing;

using System.Windows.Forms;

 

namespace Hty

{

    class MyForm : Form

    {

        private MainMenu men;

        private MenuItem item;

        static void Main()

        {

            Application.Run(newMyForm());

        }

        public MyForm()

        {

            this.Text = "菜单";

            

            ///菜单

            men = new MainMenu();

            men.Name = "a";

            men.MenuItems.Add("ss");

 

            ///菜单项

            item = new MenuItem();

            item.Text = "姓名";

            men.MenuItems.Add(item);

            item.MenuItems.Add("ss");

            item.MenuItems[0].Checked = true;

            item.MenuItems[0].Click += newEventHandler(MyForm_Click);

           

            this.Menu = men;

        }

 

        void MyForm_Click(object sender,EventArgs e)

        {

            MessageBox.Show(((MenuItem)sender).Text);

        }

    }

}

3、   快捷菜单(ContextMenu类)

快捷菜单是当我们使用WORD稳当或者VS.NET编译器时右键点击窗体时出现的菜单,快捷菜单从某些方面比主菜单要简单,主要因为主菜单可以加入N列菜单,而快捷菜单值能加入一列菜单。

要想使用快捷菜单也必须将快捷菜单的对象赋给控件中的ContextMenu属性才可以。

this.ContextMenu = new ContextMenu();

如果想要往快捷菜单上加入相应的项,也必须要通过菜单项来加入,快捷菜单中也有MenuItems属性。

 

例:

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Hty

{

    class MyForm : Form

    {

        private MainMenu men;

        private MenuItem item;

        private ContextMenu txtmen;

        static void Main()

        {

            Application.Run(newMyForm());

        }

        public MyForm()

        {

            this.Text = "菜单";

           

            ///菜单

            men = new MainMenu();

            men.Name = "a";

            men.MenuItems.Add("ss");

 

            ///菜单项

            item = new MenuItem();

            item.Text = "姓名";

            men.MenuItems.Add(item);

            item.MenuItems.Add("ss");

            item.MenuItems[0].Checked = true;

            item.MenuItems[0].Click += newEventHandler(MyForm_Click);

           

            ///快捷菜单

            txtmen = new ContextMenu();

            txtmen.MenuItems.Add(item);

 

            this.Menu = men;

            this.ContextMenu = txtmen;

        }

        void MyForm_Click(object sender,EventArgs e)

        {

            MessageBox.Show(((MenuItem)sender).Text);

        }

    }

}

原创粉丝点击