webbrowser selstart selLength

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

1 获得webBrowser光标所在的位置

2 设置webBrowser光标的位置

3 获得webBrowser选中的文本长度

4 选中webBrowser指定的字符串

项目添加引用Microsoft.mshtml

单元引用

using mshtml;

    获得webBrowser光标所在的位置

当有文本被选中时返回 的位置应为当 getSelectionStart() - getSelectionLength()
        /*
        function getSelectionStart(){
             var range=document.selection.createRange();
             range.moveStart('character', -document.body.innerText.length);
             return range.text.length;
        }
        */
        private int getSelectionStart(WebBrowser webBrowser)
        {
            try
            {
                IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
                IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
                range.moveStart("character", -document.body.innerText.Length);
                return range.text.Length;
            }
            catch (System.Exception ex)
            {
                //MessageBox.Show(ex.Message);
                //当光标在0这个位置使用功能引起错误
                return 0;
            }
        }


    设置webBrowser光标的位置

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

            webBrowser1.Document.Focus();
            setSelection(webBrowser1, 6, 0);


    获得webBrowser选中的文本长度

        /*
        function getSelectionLength()
        {
            return document.selection.createRange().text.length;
        }
         */
        private int getSelectionLength(WebBrowser webBrowser)
        {
            try
            {
                IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
                IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
                return range.text.Length;
            }
            catch (System.Exception ex)
            {
                return 0;
                //当光标在0这个位置使用功能引起错误
            }
        }


    选中webBrowser指定的字符串

  /*     
        function setSelection(start,length){
            var range=document.selection.createRange();
            range.collapse(true);
            range.moveStart('character', start);
            range.moveEnd('character', length);
            range.select();
        }
        */
        public void setSelection(WebBrowser webBrowser, int start, int length)
        {
            IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
            IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
            range.collapse(true);
            range.move("textedit", -1);  //光标移动到第0位处
            range.moveStart("character", start);
            range.moveEnd("character", length);
            range.select();
        }

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using mshtml;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.DocumentText = @"2013-12-07 19:14:20";
            webBrowser1.Document.ExecCommand("EditMode", false, null);
        }

        /*
        function getSelectionStart(){
             var range=document.selection.createRange();
             range.moveStart('character', -document.body.innerText.length);
             return range.text.length;
        }
        */
        private int getSelectionStart(WebBrowser webBrowser)
        {
            try
            {
                IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
                IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
                range.moveStart("character", -document.body.innerText.Length);
                return range.text.Length;
            }
            catch (System.Exception ex)
            {
                //MessageBox.Show(ex.Message);
                //当光标在0这个位置使用功能引起错误
                return 0;
            }
        }

        /*
        function getSelectionLength()
        {
            return document.selection.createRange().text.length;
        }
         */
        private int getSelectionLength(WebBrowser webBrowser)
        {
            try
            {
                IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
                IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
                return range.text.Length;
            }
            catch (System.Exception ex)
            {
                return 0;
                //当光标在0这个位置使用功能引起错误
            }
        }


        /*     
        function setSelection(start,length){
            var range=document.selection.createRange();
            range.collapse(true);
            range.moveStart('character', start);
            range.moveEnd('character', length);
            range.select();
        }
        */
        public void setSelection(WebBrowser webBrowser, int start, int length)
        {
            IHTMLDocument2 document = (IHTMLDocument2)webBrowser.Document.DomDocument;
            IHTMLTxtRange range = (IHTMLTxtRange)document.selection.createRange();
            range.collapse(true);
            range.move("textedit", -1);  //光标移动到第0位处
            range.moveStart("character", start);
            range.moveEnd("character", length);
            range.select();
        }

        //选中指定的字符串
        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.Focus();
            setSelection(webBrowser1, 0, 4);
        }

        //光标所在的位置
        private void button2_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.Focus();
            int i = (int)getSelectionStart(webBrowser1);
            Text = i.ToString();
        }

        //选中的字符串长度
        private void button3_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.Focus();
            Text = getSelectionLength(webBrowser1).ToString();
        }

        //设置光标的位置
        private void button4_Click(object sender, EventArgs e)
        {
            webBrowser1.Document.Focus();
            setSelection(webBrowser1, 6, 0);
        }
    }
}
View Code

这是翻译JAVA SCRIPT的代码

"<script>
function getCommandValue(commandId){
    return document.queryCommandValue(commandId);
}
function getSelectionStart(){
    var range=document.selection.createRange();
    range.moveStart('character', -document.body.innerText.length);
    return range.text.length;
}
function getSelectionLength(){
    return document.selection.createRange().text.length;
}
function setSelection(start,length){
    var range=document.selection.createRange();
    range.collapse(true);
    range.moveStart('character', start);
    range.moveEnd('character', length);
    range.select();
}
</script>"
View Code
原文地址:https://www.cnblogs.com/xe2011/p/3463124.html