C# 强制嵌入式Acrobat viewer捕获鼠标滚轮

C# 强制嵌入式Acrobat viewer捕获鼠标滚轮,c#,winforms,acrobat,mousewheel,acrobat-sdk,C#,Winforms,Acrobat,Mousewheel,Acrobat Sdk,我在C#winform应用程序中嵌入了Acrobat viewer。 查看器位于选项卡控件中的选项卡页tabPage1 我使用此答案中的代码: 我想强制查看器捕获鼠标滚轮,以便文件滚动 当我切换到另一个窗口并返回到应用程序时,我发现选项卡页面名称处于焦点位置,文件不会滚动 我使用AdobeAcrobatDC。 有办法做到这一点吗?当观看者聚焦时是否会滚动 如果是,只要在窗体再次激活时将焦点重新设置到查看器上即可 您始终可以将WM_鼠标滚轮发送给查看器。阅读如何将焦点设置回查看器?这就是问题所在。

我在C#winform应用程序中嵌入了Acrobat viewer。 查看器位于选项卡控件中的选项卡页
tabPage1

我使用此答案中的代码:

我想强制查看器捕获鼠标滚轮,以便文件滚动

当我切换到另一个窗口并返回到应用程序时,我发现选项卡页面名称处于焦点位置,文件不会滚动

我使用AdobeAcrobatDC。
有办法做到这一点吗?

当观看者聚焦时是否会滚动

如果是,只要在窗体再次激活时将焦点重新设置到查看器上即可


您始终可以将WM_鼠标滚轮发送给查看器。阅读

如何将焦点设置回查看器?这就是问题所在。我找不到任何方法来执行此操作。如果您有要聚焦的控件/窗口的句柄(似乎有),则可以p/invoke。试试这个。
CAcroAVDoc acroExchAVDoc;
CAcroPDDoc pdDoc; 

void CreatePdfViewerAndOpenFile(string pdfFile)
{
    short AV_DOC_VIEW = 2;
    short PDUseBookmarks = 3;
    short AVZoomFitWidth = 2;

    Type AcroExch_AVDoc = Type.GetTypeFromProgID("AcroExch.AVDoc");
    acroExchAVDoc = (Acrobat.CAcroAVDoc)Activator.CreateInstance(AcroExch_AVDoc);
    bool ok = acroExchAVDoc.OpenInWindowEx(pdfFile, tabPage1.Handle.ToInt32(), AV_DOC_VIEW, -1, 0, PDUseBookmarks, AVZoomFitWidth, 0, 0, 0);
    pdDoc = (CAcroPDDoc)acroExchAVDoc.GetPDDoc();
}