C# SystemMenu类介绍

开发 后端
这里介绍C# SystemMenu类的实现使得整个系统菜单存取容易许多。你可以使用这个类来修改一个窗口的菜单。通过调用静态成员函数FromForm你得到一个对象。

学习C#时,经常会遇到C# SystemMenu类问题,这里将介绍C# SystemMenu类问题的解决方法。

C# SystemMenu类

C# SystemMenu类的实现使得整个系统菜单存取容易许多。你可以使用这个类来修改一个窗口的菜单。通过调用静态成员函数FromForm你得到一个对象,该函数要求一个Form对象或一个从Form继承的类作为它的参数。然后它创建一个新的对象,当然如果GetSystemMenu API调用失败的话,将引发一个NoSystemMenuException例外。

注意,每一个Windows API菜单函数要求一个菜单句柄以利于操作。因为菜单句柄实际上是一个C++指针,所以在.NET中你要使用IntPtr来操作它。许多函数还需要一个位掩码标志来指明新菜单项的动作或形式。幸运的是,你不必象在VC++中那样,通过某个头文件的包含来使用一系列的位掩码标志定义,.NET中已经提供了一个现成的公共枚举类ItemFlags。下面对这个类的几个重要成员作一说明:
◆mfString―― 告诉子系统将显示由菜单项中的“Item”参数传递的字符串。
◆mfSeparator――此时 "ID" 与 "Item" 参数被忽略。
◆MfBarBreak―― 当用于菜单条时,其功能与mfBreak一样;当用于下拉菜单,子菜单或快捷菜单时,新的一列与旧有的一列由一线垂直线所隔开。
◆MfBreak――把当前项目放在一个新行(菜单条)或新的一列(下拉菜单,子菜单或快捷菜单)。

注意:如果指定多个标志,应该用位操作运算符|(或)连接。例如:

  1. //将创建一个菜单项 "Test" ,且该项被选中(checked)  
  2. mySystemMenu.AppendMenu(myID, "Test", ItemFlags.mfString|ItemFlags.mfChecked); 

“Item”参数指定了新项中要显示的文本,其ID必须是唯一的数字――用来标志该菜单项。

注意:确保新项的ID大于0小于0XF000。因为大于等于0XF000的范围为系统命令所保留使用。你也可以调用类SystemMenu的静态方法VerifyItemID来核验是否你的ID正确。

另外,还有两个需要解释的常量:mfByCommand和mfByPosition。

第一,在缺省情况下,使用mfByCommand。第二,“Pos”的解释依赖于这些标志:如果你指定mfByCommand,“Pos”参数就是在新项目插入前项目的ID;如果你指定mfByPosition,“Pos”参数就是以0索引为开头的新项的相对位置;如果是-1并且指定 mfByPosition,该项目将被插入到最后。这也正是为什么AppendMenu()可以为InsertMenu()所取代的原因。以上介绍C# SystemMenu类

【编辑推荐】

  1. C#创建表单简单介绍
  2. C#修改DataReader默认行为
  3. C#设置CooperativeLevel概述
  4. C#表单增加控件简单描述
  5. C# EmployeePlug类概述
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-12 09:41:28

C# Director

2009-08-06 14:53:41

C# User类

2010-01-15 18:35:25

C++的类

2009-08-27 13:37:11

C#类和结构

2009-09-02 14:33:57

C#类实现接口

2009-08-12 18:35:36

C# ArrayLis

2009-08-10 16:30:56

C# BitmapDa

2009-09-02 17:20:50

C# Parsing

2009-08-25 10:24:29

C# delegate

2009-08-17 16:47:51

C# Anonymou

2009-07-31 14:15:38

C# 构造函数

2009-08-12 15:43:02

操作C# Datase

2009-08-04 08:48:44

C#内置特性

2009-08-18 16:45:40

C# Raw Sock

2009-08-12 15:34:40

C# DBNull

2009-08-21 17:24:06

C# SingleIn

2009-09-07 14:29:52

C# ServiceC

2009-08-06 14:43:10

C# Calculat

2009-09-02 17:44:41

C#字符串处理

2009-09-03 10:42:16

C# Employee
点赞
收藏

51CTO技术栈公众号