附件:http://files.cnblogs.com/xe2011/Webbrowser_SelStart.rar

1 获得webBrowser光标所在的位置

2 设置webBrowser光标的位置

3 获得webBrowser选中的文本长度

4 选中webBrowser指定的字符串

项目添加引用Microsoft.mshtml

单元引用

  1. using mshtml;

获得webBrowser光标所在的位置

当有文本被选中时返回 的位置应为当 getSelectionStart() - getSelectionLength()
  1. /*
  2. function getSelectionStart(){
  3. var range=document.selection.createRange();
  4. range.moveStart('character', -document.body.innerText.length);
  5. return range.text.length;
  6. }
  7. */
  8. private int getSelectionStart(WebBrowser webBrowser)
  9. {
  10. try
  11. {
  12. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  13. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  14. range.moveStart("character", -document.body.innerText.Length);
  15. return range.text.Length;
  16. }
  17. catch (System.Exception ex)
  18. {
  19. //MessageBox.Show(ex.Message);
  20. //当光标在0这个位置使用功能引起错误
  21. return ;
  22. }
  23. }

设置webBrowser光标的位置

请看这个 选中指定的字符串 设置length=0,设置start的值就是光标的所在的位置

  1. webBrowser1.Document.Focus();
  2. setSelection(webBrowser1, , );

获得webBrowser选中的文本长度

  1. /*
  2. function getSelectionLength()
  3. {
  4. return document.selection.createRange().text.length;
  5. }
  6. */
  7. private int getSelectionLength(WebBrowser webBrowser)
  8. {
  9. try
  10. {
  11. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  12. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  13. return range.text.Length;
  14. }
  15. catch (System.Exception ex)
  16. {
  17. return ;
  18. //当光标在0这个位置使用功能引起错误
  19. }
  20. }

选中webBrowser指定的字符串

  1. /*
  2. function setSelection(start,length){
  3. var range=document.selection.createRange();
  4. range.collapse(true);
  5. range.moveStart('character', start);
  6. range.moveEnd('character', length);
  7. range.select();
  8. }
  9. */
  10. public void setSelection(WebBrowser webBrowser, int start, int length)
  11. {
  12. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  13. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  14. range.collapse(true);
  15. range.move("textedit", -); //光标移动到第0位处
  16. range.moveStart("character", start);
  17. range.moveEnd("character", length);
  18. range.select();
  19. }

完整代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using mshtml;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18.  
  19. }
  20.  
  21. private void Form1_Load(object sender, EventArgs e)
  22. {
  23. webBrowser1.DocumentText = @"2013-12-07 19:14:20";
  24. webBrowser1.Document.ExecCommand("EditMode", false, null);
  25. }
  26.  
  27. /*
  28. function getSelectionStart(){
  29. var range=document.selection.createRange();
  30. range.moveStart('character', -document.body.innerText.length);
  31. return range.text.length;
  32. }
  33. */
  34. private int getSelectionStart(WebBrowser webBrowser)
  35. {
  36. try
  37. {
  38. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  39. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  40. range.moveStart("character", -document.body.innerText.Length);
  41. return range.text.Length;
  42. }
  43. catch (System.Exception ex)
  44. {
  45. //MessageBox.Show(ex.Message);
  46. //当光标在0这个位置使用功能引起错误
  47. return ;
  48. }
  49. }
  50.  
  51. /*
  52. function getSelectionLength()
  53. {
  54. return document.selection.createRange().text.length;
  55. }
  56. */
  57. private int getSelectionLength(WebBrowser webBrowser)
  58. {
  59. try
  60. {
  61. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  62. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  63. return range.text.Length;
  64. }
  65. catch (System.Exception ex)
  66. {
  67. return ;
  68. //当光标在0这个位置使用功能引起错误
  69. }
  70. }
  71.  
  72. /*
  73. function setSelection(start,length){
  74. var range=document.selection.createRange();
  75. range.collapse(true);
  76. range.moveStart('character', start);
  77. range.moveEnd('character', length);
  78. range.select();
  79. }
  80. */
  81. public void setSelection(WebBrowser webBrowser, int start, int length)
  82. {
  83. IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
  84. IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
  85. range.collapse(true);
  86. range.move("textedit", -); //光标移动到第0位处
  87. range.moveStart("character", start);
  88. range.moveEnd("character", length);
  89. range.select();
  90. }
  91.  
  92. //选中指定的字符串
  93. private void button1_Click(object sender, EventArgs e)
  94. {
  95. webBrowser1.Document.Focus();
  96. setSelection(webBrowser1, , );
  97. }
  98.  
  99. //光标所在的位置
  100. private void button2_Click(object sender, EventArgs e)
  101. {
  102. webBrowser1.Document.Focus();
  103. int i = (int)getSelectionStart(webBrowser1);
  104. Text = i.ToString();
  105. }
  106.  
  107. //选中的字符串长度
  108. private void button3_Click(object sender, EventArgs e)
  109. {
  110. webBrowser1.Document.Focus();
  111. Text = getSelectionLength(webBrowser1).ToString();
  112. }
  113.  
  114. //设置光标的位置
  115. private void button4_Click(object sender, EventArgs e)
  116. {
  117. webBrowser1.Document.Focus();
  118. setSelection(webBrowser1, , );
  119. }
  120. }
  121. }

这是翻译JAVA SCRIPT的代码

  1. "<script>
  2. function getCommandValue(commandId){
  3. return document.queryCommandValue(commandId);
  4. }
  5. function getSelectionStart(){
  6. var range=document.selection.createRange();
  7. range.moveStart('character', -document.body.innerText.length);
  8. return range.text.length;
  9. }
  10. function getSelectionLength(){
  11. return document.selection.createRange().text.length;
  12. }
  13. function setSelection(start,length){
  14. var range=document.selection.createRange();
  15. range.collapse(true);
  16. range.moveStart('character', start);
  17. range.moveEnd('character', length);
  18. range.select();
  19. }
  20. </script>"

webbrowser selstart selLength的更多相关文章

  1. DBGridEh 在粘贴中文时出现乱码和错位 100zhx_888]

    http://www.fx114.net/qa-29-3439.aspx 回复于: -- :: unit DBGridEh; 把下面这个函数替换成这样 procedure TDBGridInplace ...

  2. VBA精彩代码分享-1

    今天下班前分享一下之前在网上搜到的两段好用的VBA代码,貌似都来自国外,觉得挺好,模仿不来. 第一段的功能是修改VBA控件中的文本框控件,使其右键可以选择粘贴.复制.剪切等: Option Expli ...

  3. Delphi 字符串函数 StrUtils(大全)

    引用单元: StrUtils; 首部 function AnsiResemblesText(const AText, AOther: string): Boolean; $[StrUtils.pas ...

  4. c#如何判断webbrowser已经加载完毕

    最近有个小程序需要采集网页源代码,但有的网页中JS脚本又会生成额外的代码,比如http://www.cnblogs.com/lidabo/p/4169396.html 红框部分便是另外加载的代码. 此 ...

  5. 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体

    注:本文适用.net 2.0+的winform项目 目的: 点击页面中的target="_blank"链接时,弹出新窗体 页面中有window.close()操作时,关闭窗体 上述 ...

  6. WPF 开发 WebBrowser

    WebBrowser WebBrowser 报错如何屏蔽 CEF(Chromium Embedded Framework)       参考 WPF, Chrome Embedded and WebA ...

  7. C# Webbrowser 常用方法及多线程调用

    设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...

  8. C#中的WebBrowser控件的使用

    0.常用方法   Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(st ...

  9. 【总结】使用WebBrowser遇到的陷阱

    一.前言 一直想用WebBrowser做一些好玩的东西,比如抓取分析感兴趣的网站页面.自动点击提交页面等,所以最近在研究WebBrowser.WebBrowser的功能十分强大,就是一个微型的Brow ...

随机推荐

  1. 关于js小数计算的问题

    在js浮点运算中 var a=0.2-0.1; var b=0.3-0.2; console.log(a==b); 答案是什么呢,很多人可能认为是true,包括我在内,但是当我写出来运行了一下,我被答 ...

  2. VS2010升级VS2012必备(MVC4 WebPage2.0 Razor2.0资料汇集)

    刚把项目升级到2012,发现发生了很多变化,以下是最近看过的网站和资料汇集,供需要者参考. 本文在最近一个月可能会不断更新. Razor2.0 新特性介绍: 介绍1:http://vibrantcod ...

  3. backbone csdn

    http://blog.csdn.net/the_fire/article/details/7444067 blog.csdn.net/the_fire/article/details/7445448 ...

  4. Java运算符(一)equals方法与“==”

    超类Object的equals只是比较两者之间的引用对象是否相同,这一点跟操作符“==”是一样的. 在基本数据类型中,“==”用于比较两者之间的值(内容)是否相等. 在引用类型中,“==”用于比较两者 ...

  5. 李洪强iOS开发之-环信02.3_具体接口讲解 - Apple Docs

    http://www.easemob.com/apidoc/ios/chat3.0/annotated.html Apple Docs.

  6. [wikioi]能量项链

    http://wikioi.com/problem/1154/ 这是石子归并的加强版,基本就是分治法的DP.但是有了个环,因为任何一个位置都可开始,所以就建立2*N的数组,然后对可能的区间遍历一次,就 ...

  7. BOM的来源是不可能出现的字符,GB2312双字节高位都是1,Unicode理论的根本缺陷导致UTF8的诞生

    Unicode字符编码规范   http://www.aoxiang.org 2006-4-2 10:48:02Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的 ...

  8. SpringMVC源码解析 - HandlerMethod

    HandlerMethod及子类主要用于封装方法调用相关信息,子类还提供调用,参数准备和返回值处理的职责. 分析下各个类的职责吧(顺便做分析目录): HandlerMethod 封装方法定义相关的信息 ...

  9. Super Phyllis(穷举+搜索)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2723 题意:给出一些字符串u,v,代表u-&g ...

  10. 【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!

    转自:http://blog.csdn.net/gqqnb/article/details/6412364 2012.1.24更新 增加了“安装方法” eclipse是一个程序开发平台,它本身并不限制 ...