好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

自己的代码仓库源码

自己的代码仓库源码

写代码写久了就会遇见不少好的代码片段,以前是把cs文件拷贝出来或者存在txt文档里面,然后造成管理困难查找困难的问题造成诸多的不方便。自己闲着没事就捯饬了一个我的“代码仓库”,用来管理和收藏我感觉不错的代码片段。用了一段时间感觉还不错,就在这里给大家分享下。混园子挺久,一直做伸手党,是时候拿点东西出来向大家混个脸熟~~

先上个界面:

程序中的左边是listbox 右边是webbrowser控件。具有基本的增删改查的功能,同时具有对博客园和CSDN文章的检索和抓取的功能,方便收藏代码。本地代码收藏是基于sqlite数据库,实际效果证明对大文本的载入效果还是很不错的!程序自定义了分类和编辑框,对于编辑框,我觉得是这个程序最拿得出手的一个亮点,待会儿详说.....

继续上图:

我们选择一个文章:

我们点下收藏:

收藏的时候就弹出了这个新建条目的编辑框,这个编辑框我弄了好久才整出来的 原理是用webbrowser控件加载kindeditor编辑器 原理是用C#调用webbrowser中的js方法把文档数据塞进去。保存的时候也是这样子取出html文档保存到本地的sqlite数据库中。所以程序中的展示和编辑都是基于webbrowser控件的,抓取的文章可能会调用外部的css或者js啥的。有可能在本地展示的时候就达不到web上展示的效果,所以有时候需要必要的修改后保存。

在编辑窗口选个分类 填一些备注信息 保存后就可以在本地库中检索到了

如图所示:本段博文已经被我收入囊中了

增删改啥的就布截图了 ,基本上都是差不多的操作。下面讲解下关键部分的代码。

目录结构

js文件夹里面放了jquery文件和博客园的common.js文件,是为了复原展示效果。。。

web文件夹里面是放了编辑器和展示与编辑的html文件

show.html  里面是空的,为了让后台向里面填塞展示的数据。

 <!  doctype html  > 
 <  html  > 
     <  head  > 
     </  head  > 
     <  body  > 
         <  form  > 
         </  form  > 
     </  body  > 
 </  html  > 

填数据的代码是:

  private   void  LoadContent( string   id)
        {
            dr_Content  = SqlLiteHelper.GetDataRow( out  error,  "  select a.id,title,content,Inserttime,updateTime,b.typeName as type,Remark from content a left join type b on a.type=b.id  where a.id=  "  +  id);
              string  content =  @"  <center><H2>  "  + dr_Content[ "  Title  " ].ToString() +  "  </H2></center> <small><font face=\"Arial, Helvetica\">分类:  "  + dr_Content[ "  Type  " ].ToString() +  "  &nbsp&nbsp&nbsp&nbsp录入时间:  "  + dr_Content[ "  InsertTime  " ].ToString().Replace( "  ''  " ,  "  '  " ) +  "  &nbsp&nbsp&nbsp&nbsp编辑时间:  "  + dr_Content[ "  UpdateTime  " ].ToString() +  "  <hr />  "  + dr_Content[ "  Content  "  ].ToString();
            content  +=  "  <br/><br/><br/><br/><hr/> 备注:<br/>  "  + dr_Content[ "  Remark  " ].ToString() +  "  </font><small>  "  ;
             wb_Show.Document.Body.InnerHtml =  content;
        } 

关键代码是:

wb_Show.Document.Body.InnerHtml= content;

将组织好的html文档填塞到webbrowser控件里面的body里面。

edit.html代码为:

 <!  doctype html  > 
 <  html  > 
     <  head  > 
         <  meta   charset  ="utf-8"   /> 
         <  title  > D </  title  > 
         <  script   charset  ="utf-8"   src  ="kindeditor-min.js"  ></  script  > 
         <  script   charset  ="utf-8"   src  ="zh_CN.js"  ></  script  > 
         <  script  > 
             var   editor;
            KindEditor.ready(  function  (K) {
                editor   =   K.create(  '  textarea[name="content"]  '  , {
                    allowFileManager :   true  ,
                    fullscreenMode:  true  

                });
            });

              function   getHtml()
            {
                  return   editor.html();
            };
              function   setHtml(htmlCode)
            {
                editor.html(htmlCode);
            };
              function   ClearHtml()
            {
                editor.html(  ''  );
            };
          </  script  > 
     </  head  > 
     <  body  > 
         <  form  > 
             <  textarea   name  ="content"   id  ="content_id"   style  ="visibility:hidden;"  >   </  textarea  > 
         </  form  > 
     </  body  > 
 </  html  > 

在这个页面加载了kindeditor编辑器。还定义了三个方法分别是获取文档,填塞文档,清空文档。都是基于kindeditor编辑器的内置函数。

调用webbrowser控件里面的js方法setHtml的代码是

  wb_edit.Document.InvokeScript( "  setHtml  " ,  new   object [] { content });

方法名称和参数数组俩个参数。

读取就更简单:

   string  content = wb_edit.Document.InvokeScript( "  getHtml  " ).ToString().Replace( "  '  " ,  "  ''  " );

 使用webbrowser控件有个常见的问题就是js脚本错误弹出框 所以需要加代码屏蔽掉:

  this .wb_Show.ScriptErrorsSuppressed =  true ;

另外一个问题是点击连接会出现调用系统的IE浏览器打开窗体的情况。可以这样子解决:

  private   void  wb_ShowNet_NewWindow( object   sender, CancelEventArgs e)
        {
            e.Cancel  =  true  ;
              string  a_html =  wb_ShowNet.Document.ActiveElement.OuterHtml;
              if  (a_html.IndexOf( "  href  " ) > - 1  )
            {
                  string  url =  new  Regex( "  href=\"[\\d\\D]+?\"  " ).Match(a_html).Value.Replace( "  href=\"  " ,  "" ).Replace( "  \"  " , ""  );
                  this  .wb_ShowNet.Navigate(url);
            }
        } 

在NewWindow事件里面监测打开的连接,把原事件取消掉 用正则重新编辑下连接的代码,取得网页链接后再返回给控件打开。

源代码下载地址:

http://www.everbox.com/f/cXhSfUh8npETWbIymF6O2aGRAl

bug啥的肯定有的,欢迎提出意见或者修改代码进行完善。方便的话把修改后的发我一份yesicoo@163.com 不甚感激

 附个群号:160046333  欢迎讨论

 

 

标签:  代码 ,  webbrowser ,  仓库

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于自己的代码仓库源码的详细内容...

  阅读:47次