初めまして、ペコです。
form型で参照したフォームの、動作を禁止する方法を教えてください。
フォームのEnabledプロパティをFalseにしたのですが、なぜかキーイベントが有効になっているようです。
よろしくお願いします。
キーイベントのヘルプを見たら
フォーカスが設定されているオブジェクトに対して発生します。
って書いてあるんで、そのとおりだと思います。
しょうがないので、キーイベントのプロシージャに
フォームがEnabled=Falseだったら抜けるロジックを書いたら駄目ですか?
早速の返答、ありがとうございます。
キーイベントのプロシジャに、排他処理を用意する方法ですが、
キーイベントのプロシジャは僕の担当から外れている為、
出来れば修正したくないのです。
説明が足りませんでした。申し訳有りません。
okuさんの方法は最終手段としてとっておくことにします。
自分が取得しているのはForm型の参照のみです。
よろしくおねがいします。
うーーん他にないような気が…
ちなみにForm型の参照ってどうやってるんですか?
コードを書いてくれると参考になるかも?
VB独学なので、知ってる範囲が狭すぎです。
もっと勉強しよっと!
FormそのものをEnabled = Falseにするのではなく
Form内の各コントロールをEnabled = Falseにする
というのでは駄目でしょうか?
返答、ありがとうございます!
>okuさん
クラスなんかのメソッドで、
Public Sub SetMousePointer(ByRef frmSetForm As Form, ByVal cntValue As MousePointerConstants)
こんな感じで取得しています。このfrmSetFormに対してEnabled = Falseをかけているんです。。。(;_;
>natumeguさん
あ!なるほど!。controlsコレクションを見る方法ですね。一度Enableに
した後、元に戻すのが大変そうですが(以前の状態を記憶しなくてはいけないかも)。
今、ちょっと別件で詰まっているので、終わり次第やってみます。
ありがとうございます。
すいません。実装が遅れました。
結局、フォーム上に乗ってるコントロールのいくつかについて、
Enable=falseにしてもキーがきいてしまう事がわかりました。
こうなってしまうと、完全にお手上げです。
各イベント毎にFormのEnabledを見て貰う事にしようと思います。
ありがとうございました。
ダミーコントロールをフォームの表示領域の外に用意しておいて、
フォームのEnabledをFalseにするタイミングでそっちにSetFocusしてみては?
キーイベントは効いてしまうけどTABで他のコントロールにフォーカスが移ることも無いし。
ツイート | ![]() |