菜单
一、 菜单(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(new MyForm());
}
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 += new EventHandler(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(new MyForm());
}
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 += new EventHandler(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);
}
}
}