3

System.Windows.Forms.PrintPreviewDialog印刷プレビュー ダイアログを表示するために使用する WinForms アプリケーションに取り組んでいます。ユーザーがそのダイアログで ESC を押すと、ダイアログを閉じたいと思います。残念ながら、これを行う方法がわかりません。KeyDown/PreviewKeyDown イベント ハンドラをインストールしようとしましたが、呼び出されません。また、ダイアログ (およびその PrintPreviewControl) にフォーカスを設定しようとしましたが、それが問題だと考えましたが、それも役に立ちませんでした。これを機能させる方法を知っている人はいますか?

4

2 に答える 2

5

ユーザーがESCを押したときにフォームを閉じるように、メソッドをカスタマイズPrintPreviewDialogしてオーバーライドしました。ProcessCmdKeyこれは最もクリーンなソリューションのようです。

私が書いたコードは次のとおりです。

using System.Windows.Forms;

namespace MyProject.UI.Dialogs
{
  class CustomPrintPreviewDialog : PrintPreviewDialog
  {
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
      // Close the dialog when the user presses ESC
      if (keyData == Keys.Escape)
      {
        this.Close();
        return true;
      }

      return base.ProcessCmdKey(ref msg, keyData);
    }
  }
}
于 2010-02-05T14:41:48.557 に答える
0

私はこれを試したことはありませんが、Esc を押したときにSystem.Windows.Forms呼び出されませんか? CancelButtonフォームを呼び出すダミーの [キャンセル] ボタンを作成してみてください.Close

于 2010-02-03T18:40:50.777 に答える