下面的这个系列是以一个小软件的开发过程为基础,和大家分享下我在开发这个软件时遇到的一些问题和总结。

 先更新下软件:代码库编辑器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.看过我前面的系列文章(嘻嘻)

如果你会以上几点的话,你自己就可以动手打造一个这样的编辑器,当然你也可以跟着我一步步的实现它。注意,在系列中,不会提供源代码下载,如果你想学到更多的东西,希望你自己动手。我会把思路和主要代码贴出来的,可能跟着我的思路结合代码自己做一个编辑器。