~イベント処理~
以前の 記事 で、PDF Viewer SDK の PDF 表示とサムネイルの二つのコントロールの同期を取るために、一方でページを移動したらもう一方も同じページに移動するイベント処理をご紹介しました。
このようなイベント処理を実装する方法を詳しく教えてほしいというリクエストを頂きましたので、本日は画面操作を交えてご紹介します。
まず、Visual Studio のフォームデザイナ上で PDFPageViewCtrl を選択してから「プロパティ」タブを開き、タブの上部にある「イベント」ボタンをクリックします。
すると各種イベントが並んだ画面が表示されます。PDF ビューアーコントロール特有のイベントは「その他」に表示されます。
ここでは、DoAction イベントを実装してみます。このイベントはリンク注釈をクリックしたときに発生するイベントです。
まずプロパティの DoAction イベント右の空欄部分をダブルクリックします。するとコードエディタに画面遷移し、イベントハンドラの雛形コードが挿入されます。
private int pdfPageViewCtrl1_DoAction(AvsActionType actionType, string data)
{
return default(int);
}
「プロパティ」タブを確認していただくと、DoAction イベントには挿入されたメソッドが登録されていることが分かります。
これで準備はできました。あとはイベントハンドラの雛形を実装するだけです。
イベントハンドラには、イベントに応じて予め定義された引数があり、イベントに関する必要な情報が渡されます。DoAction イベントでは発生したアクションのタイプ、リンクをクリックした場合の URL 等のデータが渡されます。イベントハンドラはこれらのデータを使って必要な処理を実装していきます。
ここでは、アクションを実行する前に確認ダイアログを表示するようにしてみます。
「いいえ」ボタンを押した場合は、その後のアクション実行を行わないように戻り値 0 を返すようにします。
下記のコードを入力してください。
private int pdfPageViewCtrl1_DoAction(AvsActionType actionType, string data)
{
if (actionType == AvsActionType.AGAT_LAUNCH
|| actionType == AvsActionType.AGAT_URI
|| actionType == AvsActionType.AGAT_INTERNALFILE)
{
String msg = String.Format("{0}を開こうとしています。よろしいですか?", data);
if (MessageBox.Show(this, msg, "", MessageBoxButtons.YesNo) == DialogResult.No)
return 0;
}
return 1;
}
}
これでイベントハンドラの実装は終了です。
あとはこのコードをビルドして実行するだけです。
実際に実行してみると、コードのとおり確認ダイアログが開きました。
以上、イベント処理の実装方法のご紹介でした。ご参考になれば幸いです。
詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html