質問: スキャナーを利用・管理する、ベースフォームを作りたいと思っています。 ベースフォームを継承したフォームを作成して、 継承フォームからモーダルダイアログを呼び出している間、 スキャナーを停止させたいと思っております。 モーダルダイアログ表示時→スキャナークローズ モーダルダイアログ破棄時→スキャナーオープン といった感じで、ベースフォーム側にスキャナのオープン処理・クローズ処理を記述したいのですが、 モーダルダイアログの表示・破棄をベースフォーム側で受け取ることができるイベント、もしくはウィンドウズメッセージはありませんでしょうか。 OSはWindows7, Windows10, WindowsCEを想定しております。
回答: > > モーダルダイアログの表示・破棄をベースフォーム側で受け取ることができるイベント、もしくはウィンドウズメッセージはありませんでしょうか。 > > > ないです。 代替案としては、ベースフォーム側でダイアログ表示を制御する方法が考えられます。スキャナー制御しつつダイアログ表示を行う専用のメソッドを用意し、モーダルダイアログを表示する際はそれを使うようにすれば良さそうな気がします。 例えばこんな感じのメソッドです。 ``` public partial class MyBaseForm : Form { : : public DialogResult SpecialShowDialog(Form dialog) { CloseScanner(); // スキャナークローズ DialogResult result = dialog.ShowDialog(); OpenScanner(); // スキャナーオープン return result; } } ```