环境:VS2005 C# XP webbrowser控件小弟自己实现查找功能,用IHTMLTxtRange.select()方法选中一段文本。现在需要知道被选中文本的物理座标,因为有时被选中文本会恰好被查找对话框遮盖。所以需要知道被选中文本的坐标,如果和查找对话框位置重叠,就移动对话框或是滚动webbrowser内容。请问有什么方法?

解决方案 »

  1.   

    function getElementLeft(element){
        var actualLeft = element.offsetLeft;
        var current = element.offsetParent;    while (current !== null){
          actualLeft += current.offsetLeft;
          current = current.offsetParent;
        }    return actualLeft;
      }  function getElementTop(element){
        var actualTop = element.offsetTop;
        var current = element.offsetParent;    while (current !== null){
          actualTop += current.offsetTop;
          current = current.offsetParent;
        }    return actualTop;
      }能看得懂不??
      

  2.   

    用IHighlightRenderingServices吧,这样不用更改当前用户选择的内容
    为什么要求不被查找对话框挡住?
      

  3.   

     
    jiangsheng大哥,是这样的,查找对话框会遮住一部分文本,如果被查找到内容正好就在这里面,那么用户就无法直接看到查找结果,除非他移动一下查找对话框。对于richTextBox,有函数可以获得当前选择文本的物理位置,但IE里不知如何做到。