周淑華
摘 要:文章針對上下文菜單控件在工程實踐中的特殊應用需求,提出了一種基于C#環(huán)境的上下文菜單設計方法,對設計思路和實現(xiàn)步驟進行了研究和實踐,并在工程中得到了應用,應用結(jié)果表明,該設計方法正確可行,具有一定推廣應用價值。
關鍵詞:上下文菜單;控件設計
在很多工程項目中,上下文菜單是工程開發(fā)中常用的一項功能,不同的編程環(huán)境都提供了標準的菜單控件供用戶直接調(diào)用,比如VS2010編程環(huán)境下的上下文菜單控件ContextMenuStrip,可以使用戶右鍵單擊某個窗體或控件時彈出菜單,調(diào)用非常方面。但是,在很多情況下,上下文菜單都是windows標準控件,不允許對其屬性進行深入更改,用戶對菜單進行個性化設計的空間有限,比如,在需要利用用戶自定義的軟鍵盤對上下文菜單進行控制時,實現(xiàn)起來就比較麻煩。鑒于此,文中提出了一種基于C#環(huán)境的上下文菜單設計方案,用戶可以進行個性化設計和自主控制,并進行了實驗和工程應用,應用結(jié)果表明,該上下文菜單設計方法正確可行,具有一定的推廣應用價值。
1 上下文菜單設計思路
上下文菜單設計采用面向?qū)ο缶幊趟枷?,根?jù)菜單操作需求,對菜單進行充分抽象形成菜單類,設計基本思路是:首先,設計菜單索引類(INDEX),用于指示各個菜單項的位置;其次,設計菜單項類TITILE,實現(xiàn)對菜單的高度、寬度以及是否擁有下級菜單等特性進行個性化設置;然后,設計級聯(lián)菜單類(submenu),實現(xiàn)對每級級聯(lián)中菜單項的添加操作;最后,在上述類設計的基礎上,形成上下文菜單類(MENU),在數(shù)字鍵、“上、下、左、右”鍵等按鍵的控制下,實現(xiàn)用戶對菜單的彈出、隱藏、菜單項上下切換等操作。
2 上下文菜單實現(xiàn)步驟
(1)菜單索引類(INDEX)設計與實現(xiàn)
菜單索引類INDEX用于指示級聯(lián)菜單及菜單項的編號,類屬性主要包括:標識級聯(lián)菜單的索引(X)和標識級聯(lián)菜單中菜單項的索引(Y),菜單索引類INDEX的設計代碼如下:
(3)級聯(lián)菜單類(submenu)設計與實現(xiàn)
級聯(lián)菜單類submenu是根據(jù)菜單中每個菜單項的下級菜單特性抽象形成的類,類屬性主要包括:級聯(lián)菜單寬度(width)、菜單索引(index)、上級菜單項的索引(indexLeft)、是否有上級菜單(bLeft)和每個菜單項的內(nèi)容(titleArray)。級聯(lián)菜單類submenu設計代碼如下:
(4)上下文菜單類(MENU)設計與實現(xiàn)
上下文菜單類MENU是在菜單索引類(INDEX)、菜單項類(TITILE)、級聯(lián)菜單類(submenu)設計的基礎上,根據(jù)菜單的操作過程及現(xiàn)象,抽象形成的類,它包含了對菜單的所有操作,類屬性主要包括:橫向顯示閾值(widththreshold)、縱向顯示閾值(heightthreshold)、每個菜單項顯示的高度(titleheight)、菜單位置(postion)、包含的級聯(lián)菜單(menuArray)、當前菜單索引(myindex)、選中菜單索引(SelIndex)、打開菜單的按鍵值(openkey)和菜單是否打開標志(bOpen)。類成員函數(shù)主要包括:繪制菜單函數(shù)(drawMenu())、初始化菜單函數(shù)(initMenu())、按鍵輸入響應函數(shù)(input(string key))和增加級聯(lián)菜單函數(shù)(AddSubmenu(submenu sm))等。
3 上下文菜單使用流程
上下文菜單類設計完成,在使用過程中可以按照如下流程進行使用:第一步,首先定義菜單項(TITILE),并對每個菜單項的內(nèi)容進行設置;第二步,定義級聯(lián)菜單(submenu),將菜單項裝填到級聯(lián)菜單中去;第三步,定義上下文菜單(MENU),設置菜單位置和級聯(lián)菜單個數(shù);第四步,添加級聯(lián)菜單AddSubmenu(sm[i]);第六步,繪制菜單(drawMenu());第六步,對按鍵進行響應(input(string key))。上下文菜單使用示例代碼如下:
4、軟件測試結(jié)果
根據(jù)文中上下文菜單設計思路和實現(xiàn)方法,筆者成功進行了實驗,并在工程實踐中得到了應用,應用截圖如下圖所示,結(jié)果表明,該設計方法正確可行,具有一定推廣應用價值。endprint