質問

私は、用途が印刷プレビューダイアログを表示しSystem.Windows.Forms.PrintPreviewDialogというWinFormsのアプリケーションに取り組んでいます。ユーザーがそのダイアログでEscキーを押すと、私は、ダイアログを閉じたいと思います。残念ながら、私はこれを行う方法を見つけ出すことはできません。私は、KeyDownイベント/ PreviewKeyDownイベントハンドラをインストールしようとしたが、それが呼び出されることは決してありません。私はまた、(およびそのPrintPreviewControlに)ダイアログにフォーカスを設定する問題だった思考を試してみましたが、それはどちらかの助けにはなりませんでした。誰がどのようにこの仕事をするために任意のアイデアを持っていますか?

役に立ちましたか?

解決

私が終わったカスタマイズ PrintPreviewDialogするとにその ProcessCmdKey のメソッドをオーバーライドしますユーザーがEscキーを押したときにフォームを閉じます。これは、クリーンなソリューションのように思える。

ここで私が書いたコードです

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);
    }
  }
}

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top