[INMN06695] モーダルダイアログ表示中にキーボタンが再度クリックできる
対象製品
InputMan for .NET 4.0J Windows Forms Edition
発生環境
動作環境と同じ
詳細
この現象はFunctionKeyコントロールを使用し、FunctionKeyPressイベントのハンドラでUseEXDialogプロパティがTrueに設定されたPrintDialogをShowDialogメソッドで表示する場合に発生します。
FunctionKeyコントロールのキーボタンをクリックしてPrintDialogを表示させた場合、モーダルダイアログの表示であるにもかかわらず、再度キーボタンをクリックして2つ目のPrintDialogを表示させることができます。
この現象はWinodws API PrintDlg / PrintDlgExが、モーダルダイアログ表示時に、規定のメッセージをオーナーウィンドウに送信しないことに起因しています。
FunctionKeyコントロールのキーボタンをクリックしてPrintDialogを表示させた場合、モーダルダイアログの表示であるにもかかわらず、再度キーボタンをクリックして2つ目のPrintDialogを表示させることができます。
この現象はWinodws API PrintDlg / PrintDlgExが、モーダルダイアログ表示時に、規定のメッセージをオーナーウィンドウに送信しないことに起因しています。
回避方法
PrintDialogのShowDialogメソッドを呼び出す前に、FunctionKeyコントロールのCaptureプロパティを一時的にFalseに設定するとこの現象を回避できます。
以下はこの回避方法の実装例です。
[VB]
FunctionKey1.Capture = False
PrintDialog1.ShowDialog()
FunctionKey1.Capture = True
[C#]
functionKey1.Capture = false;
printDialog1.ShowDialog();
functionKey1.Capture = true;
以下はこの回避方法の実装例です。
[VB]
FunctionKey1.Capture = False
PrintDialog1.ShowDialog()
FunctionKey1.Capture = True
[C#]
functionKey1.Capture = false;
printDialog1.ShowDialog();
functionKey1.Capture = true;
この文書は、以前は次のFAQ IDで公開されていました : 7396