0

SOで見つけたコードを使用して、COMベースのAcrobat Readerを使用し、WindowsFormsHostでのホスティングを介してPDFを表示しました。

PDFを正常に表示します。2つの問題:

  • PDFをロードすると、コントロールAxAcroPDFLib.AxAcroPDFがフォーカスされます

    以前に焦点を合わせたい

  • AxAcroPDFLib.AxAcroPDFにフォーカスがある場合、ホットキー(N)を消費します。

    AltキーはNに下線を付けません。ユーザーがAxAcroPDFLib.AxAcroPDFを選択した場合でも、ホットキーを機能させたいと思います。

これはWPFのCOMとAdobeであり、答えがない可能性があることを理解しています。PDFを表示するための無料または安価なWPFコントロールがある場合は、その道を進んでいきたいと思います。これは商用アプリケーション用であるため、商用利用には無料(または安価)である必要があります。

 <Button  Click="Button_Click">_Next</Button>     

 <WindowsFormsHost Name="windowsFormsHost1"  Margin="1" />
 UserControl1 UC = new UserControl1(@"C:\temp\1000001.pdf");
 this.windowsFormsHost1.Child = UC;


 public UserControl1(string filename)
 {
     InitializeComponent();
     this.axAcroPDF1.LoadFile(filename);
 }

これはPDFを表示します。本番アプリケーションでは、使用したアクションに基づいてさまざまなPDFを表示します。

4

4 に答える 4

0

これは私のために働く:

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    If Me.AxAcroPDF1.ContainsFocus = True Then
      Me.TextBox1.Focus()
    End If
End Sub

基本的に「.ContainsFocus」は、PDF ドキュメントが読み込まれると True になります。この値をクイック タイマー (~200ms) で監視し、必要に応じて別のコントロールにフォーカスし直します。理想的ではありませんが、確実に機能します。

于 2019-04-24T14:04:17.073 に答える
0

これに対処するための私のハッキングされた解決策は、パネルを有効にする前に遅延を追加することです。明らかに、可能な限り最小限の遅延を追加したいのですが、小さすぎて、間違ったファイルを使用すると、再びフォーカスが失われます。

    System.Threading.Thread.Sleep(300)
    Panel1.Enabled = True
于 2015-07-04T12:34:44.823 に答える
0

ハンスが言ったこと。Acrobat がキー ストロークを食べているようで、どうしようもありません。

于 2012-03-26T12:53:29.543 に答える