zoukankan      html  css  js  c++  java
  • c#window程序开发入门系列自学笔记之WebBrowser

    c#window程序开发入门系列--自学笔记之WebBrowser

    该控件是本软件最核心的部分,实现文档的编辑。类似文本编辑器。为什么选择该控件作为文本编辑器呢?主要考虑到网络文章很多,该控件可以实现简单的粘贴,可以保留网页的样式。首先合适预览一下编辑器界面。

    图2-1界面预览

       看起来跟web中的文笔编辑器相似。这个文本编辑器主要有两大控件组成,上半部分是ToolStrip控winform的典型控件,下半部分WebBrowser控件。单击上半部分的快捷按钮,下面的文本进行相应的设置。

         开发这样的一个文本编辑器会牵涉到许多知识点,下面将一一记录。

    如何进入WebBrowser控件的可编辑状态?

       假设WebBrowser控件name为“EditStp”,则可以用如下代码使其进入编辑状态。

       EditStp.DocumentText = string.Empty;
       EditStp.Document.ExecCommand("EditMode", false, null);
       EditStp.Document.ExecCommand("LiveResize", false, null);

    如何监控WebBrowser控件的内容发生变化?

       WebBrowser控件没有监视内容变化的方法,所以我决定自己开发这一功能。首先我们记录该控件初始状态到一变量“oldString”,添加一定时器时刻监控WebBrowser控件的内容,与“oldString”进行比较如果内容相同没有发生变化,否则发生变化(也许高人有更好的方法请告知,谢谢)。

    如何设置WebBrowser控件的字体,大小等样式?

    1、字体加粗         EditStp.Document.ExecCommand("Bold", false, null);

    2、斜体                 EditStp.Document.ExecCommand("Italic", false, null);

    3、添加下划线     EditStp.Document.ExecCommand("Underline", false, null);

    4、设置前景色     EditStp.Document.ExecCommand("ForeColor", false, colorstr);

    5、设置背景色     EditStp.Document.ExecCommand("BackColor", false, colorstr);

    6、添加链接         EditStp.Document.ExecCommand("CreateLink", false, link);

    7、插入图片         EditStp.Document.ExecCommand("InsertImage", false, link);

    8、左侧对齐         EditStp.Document.ExecCommand("JustifyLeft", false, null);

    9、居中侧对齐     EditStp.Document.ExecCommand("JustifyCenter", false, null);

    10、右侧对齐       EditStp.Document.ExecCommand("JustifyRight", false, null);

    11、两端对齐      EditStp.Document.ExecCommand("JustifyFull", false, null);

     12、插入标号     EditStp.Document.ExecCommand("InsertOrderedList", false, null);

    13、                      EditStp.Document.ExecCommand("InsertUnorderedList", false, null);

    14、                      EditStp.Document.ExecCommand("Indent", false, null);

    15、                      EditStp.Document.ExecCommand("Outdent", false, null);

    如何实现保存网络图片文件到本地?

    首先分析WebBrowser控件的内容,用正则表达式取出图片地址,把含有“http”的图片从服务器端下载到本地。具体的代码如下所示:

    //正则查找图片地址

    public static string[] GetHtmlImageUrlList(string sHtmlText)
            {
                // 定义正则表达式用来匹配 img 标签[
                Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);

                // 搜索匹配的字符串
                MatchCollection matches = regImg.Matches(sHtmlText);

                int i = 0;
                string[] sUrlList = new string[matches.Count];

                // 取得匹配项列表
                foreach (Match match in matches)
                    sUrlList[i++] = match.Groups["imgUrl"].Value;

                return sUrlList;
            }

    string tempText = EditStp.DocumentText;
                string[] TempPic = GetHtmlImageUrlList(tempText);
                if (TempPic.Length == 0)
                {
                    MessageBox.Show("没有图片需要下载!");
                }
                else
                {
                    for (int i = 0; i < TempPic.Length; i++)
                    {
                        string webPicURL = TempPic[i].ToString();
                        if (webPicURL.IndexOf("http://") >= 0)
                        {
                            WebClient myclient = new WebClient();
                            string newpicurl = CurrentPath + "\\" + CurrentFolder + "\\stplist\\images\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + webPicURL.Substring(webPicURL.LastIndexOf("."), webPicURL.Length - webPicURL.LastIndexOf("."));
                            myclient.DownloadFile(webPicURL,newpicurl);
                            tempText = tempText.Replace(webPicURL, newpicurl);
                        }
                    }
                    EditStp.Document.OpenNew(true);
                    EditStp.DocumentText = tempText;
                    MessageBox.Show("保存成功");
                }

    存在这样一个问题就是图片下载到本地用相对路径显示,图片显示不出来必须用绝对路径才可显示。请高手指点。

     

     

    源程序下载:源文件

    安装程序下载:安装文件

     

  • 相关阅读:
    查找大文件 & 索引节点(inode)爆满 解决办法
    技术领导力 —— 左耳听风 专栏读后感
    左耳朵耗子关于技术变现一文读后感
    html--前端jquery初识
    html--JavaScript之DOM (文档对象模型)
    html--前端JavaScript基本内容
    html--前端javascript初识
    html--前端css常用属性
    html--前端css样式初识
    html--前端基本标签内容讲解
  • 原文地址:https://www.cnblogs.com/studyplay/p/1707282.html
Copyright © 2011-2022 走看看