zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [转]boost.bind 如何 bind continue.1
    Maven configure settins.xml
    JUNIT测试通过,EMMA通不过,java.lang.NoClassDefFoundError: oracle/security/pki/OracleWallet
    java中OOA,OOT, OOP, OOD, OOSM,OOM英文表示的含义是什么?
    关于navicat连接oracle 报 ORA12737 set CHS16GBK错误的解决方案
    configure integration Hibernate3,Spring3,Struts2,JPA
    Proguard returned with error code 1. See console
    Spring内置提供的NativeJdbcExtractor转换器
    oracle opreation instruction(表空间,用户etc)
    Struts2,oracle实现GOOGLE的分页样式
  • 原文地址:https://www.cnblogs.com/xe2011/p/3463124.html
Copyright © 2011-2022 走看看