Code 14
那么,谁应该注册该信息,以及在哪里注册该信息呢?我认为注册该信息的责任应该落在控件的头上,再者,该信息是与控件的类型而不是实例相关的,于是,我把注册该信息的代码放在控件的静态构造函数里:
Code 15
剩下的就是挂接相关的事件委托和处理状态的同步了,这些都和"我的博客"侧边栏的做法大同小异,这里就不重复了。
更多选择
还差点什么呢?语言!留意下面这幅截图:
图 2
Class、Members、Constructor、Methods以及节点所指向的内容均为英文,我希望可以选择用于显示的语言。于是,我为插件创建了一个选项窗口:
图 3
并在它的Load事件委托里处理当前语言下拉列表的初始化,并读取配置文件中的语言信息:
Code 16
我们确实可以避免在这里硬编码,然而,就目前来说,提供简体中文、繁体中文和英文已经足够了,除非你打算把它变成产品,并进军全球市场。当用户选好语言并点击OK按钮时,语言信息将会保存到配置文件里:
Code 17
Class Library Options窗口是通过侧边栏右下角新添加的Options按钮启动的,当语言信息改变了,TreeView也应该刷新根节点:
Code 18
需要说明的是,我不再指定Version的值,这将告诉MTPS获取最新的发布版本 (非预发行版,包括Beta版和CTP版),而Locale则与配置文件里的语言信息相对应,这意味着插入的超链接所指向的页面将与配置文件里德语言信息相对应。下面是运行效果的截图:
图 4
至此,Class Library侧边栏的开发要告一段落了,虽然此时我的脑海里又冒出了新的需求,或者你也对它有了新的想法。
相关阅读