ESCを押すと閉じるPrintPreviewDialog
-
25-09-2019 - |
質問
私は、用途が印刷プレビューダイアログを表示し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.Forms
sはCancelButton
を呼び出すことはありませんか?ダミーは、フォーム上の.Close
を呼び出し、[キャンセル]ボタンを作成してみてください。
所属していません StackOverflow