下面的这个系列是以一个小软件的开发过程为基础,和大家分享下我在开发这个软件时遇到的一些问题和总结。
先更新下软件:代码库编辑器Beta版下载 ,上一版的程序见《C#生成CHM文件(应用篇)》
软件更新清单:
1.支持文章编辑功能;
2.增加添加HTML页面功能,可以批量添加html页面;
3.修改了上一版中潜在的bug
这个软件主要实现的功能:
1.可以插入代码的编辑器,并支持语法加亮
2.查找自己的代码库,可以按关键字或者文件名或者是全文模糊检索
3.文章可以导出为CHM电子书
4.附加功能:CHM转化为Word、可以更换的WinForm皮肤等其他的附加效果
上面是我们要实现的大致功能点,具体的功能在做项目的时候再加以说明。
在前篇文章《C#生成CHM文件(应用篇)》已经给出雏形版的软件,在安装好.net framework2.0的机器上能够正常运行,虽然功能很少:可以新建文件夹、新建文章(插入代码)、编译成CHM电子书(代码语法加亮)等,但是基本就是围绕这个加以其他的功能的。
Visual Studio风格的窗体
可能有些读者发现,软件的布局有点类似Visual Studio。没错,程序中添加了可以自动隐藏的面板,如目录和编译时出现的输出窗口。这个是通过一个插件实现的,WeifenLuo.WinFormsUI.Docking。在网上可以搜索它的用法,十分的简单。
CSDN编辑器
程序的编辑器采用CSDB论坛中的编辑器(以后可能还会支持其他的编辑器),写好附有代码的文章后,点击保存,然后编译后的CHM电子书中就可以看到你的文件及语法加亮的代码。这个编辑器是B/S的,即现在十分流行的html编辑器(如FCKEditor,KindEditor等),它是显示在WebBrowser控件中的,当提交时,触发js事件,后台捕获到事件,将csdn编辑器中的内容写入htm文件中,其中htm文件是有一定规则的,因为我们需要生成的htm在浏览器中运行时能够显示语法加亮,语法加亮是通过dp.SyntaxHighlighter来实现的。
电子书目录树
程序中树是一个难点,我采用xml文件存储树中的节点信息,在程序启动后,加载xml文件中的信息,显示为相应的书,在目录中的节点发生改变后,保存为xml文件。在编译成CHM电子书时直接根据树中的节点信息进行编译。树中的难点就是使用了递归算法,大家可以先看一些递归算法的实例。以后可能会实现文章节点或是文件夹节点的拖动功能。
CHM电子书转Word
在前面的文章中,已经实现了这个功能,现在把他集成到程序中。
Google风格的查询页面
程序主界面中的logo是在网上整的一个图标,觉得蛮好看的,于是就拿来用了下,有点剽窃之嫌,嘿嘿。程序将使用Lucene来实现搜索功能,大家可能注意到,我们在新建文件的时候,文章标题后面有关键字的输入项,如果输入了关键字,则保存文章时会将关键字存储为索引,以便后面查询使用。
导入html文件
程序可以导入html文件,并且可以批量导入。
做这个程序,你可能需要如下的知识
1.WebBrowser控件、WeifenLuo.WinFormsUI.Docking控件的知识
2.对TreeView控件了解,熟悉递归算法,知道基本的C#操作xml的知识
3.了解Lucene.Net
4.看过我前面的系列文章(嘻嘻)
如果你会以上几点的话,你自己就可以动手打造一个这样的编辑器,当然你也可以跟着我一步步的实现它。注意,在系列中,不会提供源代码下载,如果你想学到更多的东西,希望你自己动手。我会把思路和主要代码贴出来的,可能跟着我的思路结合代码自己做一个编辑器。