Code 14
那么,誰(shuí)應(yīng)該注冊(cè)該信息,以及在哪里注冊(cè)該信息呢?我認(rèn)為注冊(cè)該信息的責(zé)任應(yīng)該落在控件的頭上,再者,該信息是與控件的類(lèi)型而不是實(shí)例相關(guān)的,于是,我把注冊(cè)該信息的代碼放在控件的靜態(tài)構(gòu)造函數(shù)里:
Code 15
剩下的就是掛接相關(guān)的事件委托和處理狀態(tài)的同步了,這些都和"我的博客"側(cè)邊欄的做法大同小異,這里就不重復(fù)了。
更多選擇
還差點(diǎn)什么呢?語(yǔ)言!留意下面這幅截圖:
圖 2
Class、Members、Constructor、Methods以及節(jié)點(diǎn)所指向的內(nèi)容均為英文,我希望可以選擇用于顯示的語(yǔ)言。于是,我為插件創(chuàng)建了一個(gè)選項(xiàng)窗口:
圖 3
并在它的Load事件委托里處理當(dāng)前語(yǔ)言下拉列表的初始化,并讀取配置文件中的語(yǔ)言信息:
Code 16
我們確實(shí)可以避免在這里硬編碼,然而,就目前來(lái)說(shuō),提供簡(jiǎn)體中文、繁體中文和英文已經(jīng)足夠了,除非你打算把它變成產(chǎn)品,并進(jìn)軍全球市場(chǎng)。當(dāng)用戶(hù)選好語(yǔ)言并點(diǎn)擊OK按鈕時(shí),語(yǔ)言信息將會(huì)保存到配置文件里:
Code 17
Class Library Options窗口是通過(guò)側(cè)邊欄右下角新添加的Options按鈕啟動(dòng)的,當(dāng)語(yǔ)言信息改變了,TreeView也應(yīng)該刷新根節(jié)點(diǎn):
Code 18
需要說(shuō)明的是,我不再指定Version的值,這將告訴MTPS獲取最新的發(fā)布版本 (非預(yù)發(fā)行版,包括Beta版和CTP版),而Locale則與配置文件里的語(yǔ)言信息相對(duì)應(yīng),這意味著插入的超鏈接所指向的頁(yè)面將與配置文件里德語(yǔ)言信息相對(duì)應(yīng)。下面是運(yùn)行效果的截圖:
圖 4
至此,Class Library側(cè)邊欄的開(kāi)發(fā)要告一段落了,雖然此時(shí)我的腦海里又冒出了新的需求,或者你也對(duì)它有了新的想法。
相關(guān)閱讀