【问题标题】:Scroll into a Adobe Reader using buttons c#使用按钮 c# 滚动到 Adob​​e Reader
【发布时间】:2013-12-21 18:52:56
【问题描述】:

我已经创建了一个简单的表单,我在其中使用步骤从工具箱中添加了 Adob​​e Reader

  1. 在工具箱中单击鼠标右键 - 选择项目
  2. 选择 COM Components 选项卡,然后选择“Adobe PDF Reader”
  3. 现在将 Adob​​e PDF Reader 控件拖放到用户控件中

我已经成功添加了这个,还打开了一个 pdf 文件。现在它会自动提供垂直滚动条来滚动 pdf 文档。

我想要实现的不是使用给定的滚动条或鼠标滚动,而是使用一个按钮滚动pdf,所以会有两个按钮,一个用于向上滚动,另一个用于向下滚动。

我浏览了许多论坛、页面等。没有找到我可以使用的任何东西。

我试过用

模拟按键
SendKeys.Send("{DOWN}");

但是当我按下按钮时,adobe reader 上的焦点丢失了,所以它不起作用

请帮助我...我花了将近半天的时间寻找解决方案

【问题讨论】:

    标签: c# pdf button scroll


    【解决方案1】:

    鉴于您只提供了一段您尝试过的简单代码,我将尝试为您提供一个通用解决方案 - 您需要替换指定的变量:

    • 按钮名称
    • 您的网络应用名称

    至于第一个焦点,您需要指定它的位置,类似于:

    var pFocus = webapplication.formname.pdf_document.focus();
    // or webapplication.focus(pdf_document);
    

    再次,我只是把它写成一个理想的布局,因为我说过你需要替换列出的变量才能工作,并且可能调整焦点代码,因为我没有测试过 - 但是只要你插入你的按钮变量名将在我测试过这些时起作用:

    var buttonAction = ((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 5)");
    var buttonAction_2 = ((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight 0)");
    //button action will scroll to x co-ordinate 0(far left), y co-ordinate( 5px from bottom)
    //buttonAction_2 will return you to the very top left of page, you can edit these values to mess around and try different settings.
    

    所以它看起来应该有点类似(如果您使用的是点击方法,只需在下面插入代码:

    var pFocus = webapplication.formname.pdf_document.focus();
    
    if (button.click = true)
    webapplication = pFocus;
    
    var buttonAction = ((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 5)");
    
    pFocus.execute(buttonAction);
    

    然后是按钮 2

    var pFocus = webapplication.formname.pdf_document.focus();
    
    if (button_2.click = true)
    webapplication = pFocus;
    
     var buttonAction_2 = ((IJavaScriptExecutor)webapplication).ExecuteScript("window.scrollTo(0, document.body.scrollHeight 0)");
    
    pFocus.execute(buttonAction_2);
    

    希望这在一定程度上有所帮助。

    【讨论】:

    • 不确定您是否需要“IJavaScriptExecutor”之后的 Web 应用程序名称,但请告诉我这是怎么回事 - 它可能就像 (IJavaScriptExecutor.ExecuteScript("window.scrollTo(0, document.body .scrollHeight 0)");
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多