APP下载

基于C#环境的上下文菜单设计与实现

2017-11-06周淑华

卷宗 2017年29期
关键词:级联控件按键

周淑华

摘 要:文章针对上下文菜单控件在工程实践中的特殊应用需求,提出了一种基于C#环境的上下文菜单设计方法,对设计思路和实现步骤进行了研究和实践,并在工程中得到了应用,应用结果表明,该设计方法正确可行,具有一定推广应用价值。

关键词:上下文菜单;控件设计

在很多工程项目中,上下文菜单是工程开发中常用的一项功能,不同的编程环境都提供了标准的菜单控件供用户直接调用,比如VS2010编程环境下的上下文菜单控件ContextMenuStrip,可以使用户右键单击某个窗体或控件时弹出菜单,调用非常方面。但是,在很多情况下,上下文菜单都是windows标准控件,不允许对其属性进行深入更改,用户对菜单进行个性化设计的空间有限,比如,在需要利用用户自定义的软键盘对上下文菜单进行控制时,实现起来就比较麻烦。鉴于此,文中提出了一种基于C#环境的上下文菜单设计方案,用户可以进行个性化设计和自主控制,并进行了实验和工程应用,应用结果表明,该上下文菜单设计方法正确可行,具有一定的推广应用价值。

1 上下文菜单设计思路

上下文菜单设计采用面向对象编程思想,根据菜单操作需求,对菜单进行充分抽象形成菜单类,设计基本思路是:首先,设计菜单索引类(INDEX),用于指示各个菜单项的位置;其次,设计菜单项类TITILE,实现对菜单的高度、宽度以及是否拥有下级菜单等特性进行个性化设置;然后,设计级联菜单类(submenu),实现对每级级联中菜单项的添加操作;最后,在上述类设计的基础上,形成上下文菜单类(MENU),在数字键、“上、下、左、右”键等按键的控制下,实现用户对菜单的弹出、隐藏、菜单项上下切换等操作。

2 上下文菜单实现步骤

(1)菜单索引类(INDEX)设计与实现

菜单索引类INDEX用于指示级联菜单及菜单项的编号,类属性主要包括:标识级联菜单的索引(X)和标识级联菜单中菜单项的索引(Y),菜单索引类INDEX的设计代码如下:

(3)级联菜单类(submenu)设计与实现

级联菜单类submenu是根据菜单中每个菜单项的下级菜单特性抽象形成的类,类属性主要包括:级联菜单宽度(width)、菜单索引(index)、上级菜单项的索引(indexLeft)、是否有上级菜单(bLeft)和每个菜单项的內容(titleArray)。级联菜单类submenu设计代码如下:

(4)上下文菜单类(MENU)设计与实现

上下文菜单类MENU是在菜单索引类(INDEX)、菜单项类(TITILE)、级联菜单类(submenu)设计的基础上,根据菜单的操作过程及现象,抽象形成的类,它包含了对菜单的所有操作,类属性主要包括:横向显示阈值(widththreshold)、纵向显示阈值(heightthreshold)、每个菜单项显示的高度(titleheight)、菜单位置(postion)、包含的级联菜单(menuArray)、当前菜单索引(myindex)、选中菜单索引(SelIndex)、打开菜单的按键值(openkey)和菜单是否打开标志(bOpen)。类成员函数主要包括:绘制菜单函数(drawMenu())、初始化菜单函数(initMenu())、按键输入响应函数(input(string key))和增加级联菜单函数(AddSubmenu(submenu sm))等。

3 上下文菜单使用流程

上下文菜单类设计完成,在使用过程中可以按照如下流程进行使用:第一步,首先定义菜单项(TITILE),并对每个菜单项的内容进行设置;第二步,定义级联菜单(submenu),将菜单项装填到级联菜单中去;第三步,定义上下文菜单(MENU),设置菜单位置和级联菜单个数;第四步,添加级联菜单AddSubmenu(sm[i]);第六步,绘制菜单(drawMenu());第六步,对按键进行响应(input(string key))。上下文菜单使用示例代码如下:

4、软件测试结果

根据文中上下文菜单设计思路和实现方法,笔者成功进行了实验,并在工程实践中得到了应用,应用截图如下图所示,结果表明,该设计方法正确可行,具有一定推广应用价值。endprint

猜你喜欢

级联控件按键
基于有限状态机的按键检测程序设计
级联LDPC码的STBC-OFDM系统
一种多方向导光按键结构设计
基于级联MUSIC的面阵中的二维DOA估计算法
ASP.NET服务器端验证控件的使用
LCL滤波器在6kV级联STATCOM中的应用
H桥级联型STATCOM的控制策略研究
按键的多种状态检测及消抖处理方法
解析某型号手机按键检测程序的缺陷
Spreadsheet控件在Delphi数据库系统中的编程与应用