参照フォームのキーイベントを禁止するには

解決


ペコ  2003-06-23 11:10:54  No: 78399  IP: [192.*.*.*]

初めまして、ペコです。
form型で参照したフォームの、動作を禁止する方法を教えてください。
フォームのEnabledプロパティをFalseにしたのですが、なぜかキーイベントが有効になっているようです。

よろしくお願いします。

編集 削除
oku  URL  2003-06-23 11:53:16  No: 78400  IP: [192.*.*.*]

キーイベントのヘルプを見たら
フォーカスが設定されているオブジェクトに対して発生します。
って書いてあるんで、そのとおりだと思います。
しょうがないので、キーイベントのプロシージャに
フォームがEnabled=Falseだったら抜けるロジックを書いたら駄目ですか?

編集 削除
ペコ  2003-06-23 13:07:44  No: 78401  IP: [192.*.*.*]

早速の返答、ありがとうございます。

キーイベントのプロシジャに、排他処理を用意する方法ですが、
キーイベントのプロシジャは僕の担当から外れている為、
出来れば修正したくないのです。

説明が足りませんでした。申し訳有りません。

okuさんの方法は最終手段としてとっておくことにします。



自分が取得しているのはForm型の参照のみです。
よろしくおねがいします。

編集 削除
oku  URL  2003-06-23 22:22:41  No: 78402  IP: [192.*.*.*]

うーーん他にないような気が…
ちなみにForm型の参照ってどうやってるんですか?
コードを書いてくれると参考になるかも?
VB独学なので、知ってる範囲が狭すぎです。
もっと勉強しよっと!

編集 削除
natumegu  2003-06-24 09:47:05  No: 78403  IP: [192.*.*.*]

FormそのものをEnabled = Falseにするのではなく
Form内の各コントロールをEnabled = Falseにする
というのでは駄目でしょうか?

編集 削除
ペコ  2003-06-24 10:19:13  No: 78404  IP: [192.*.*.*]

返答、ありがとうございます!

>okuさん
クラスなんかのメソッドで、

Public Sub SetMousePointer(ByRef frmSetForm As Form, ByVal cntValue As MousePointerConstants)

こんな感じで取得しています。このfrmSetFormに対してEnabled = Falseをかけているんです。。。(;_;


>natumeguさん
あ!なるほど!。controlsコレクションを見る方法ですね。一度Enableに
した後、元に戻すのが大変そうですが(以前の状態を記憶しなくてはいけないかも)。

今、ちょっと別件で詰まっているので、終わり次第やってみます。
ありがとうございます。

編集 削除
ペコ  2003-06-30 17:16:06  No: 78405  IP: [192.*.*.*]

すいません。実装が遅れました。
結局、フォーム上に乗ってるコントロールのいくつかについて、
Enable=falseにしてもキーがきいてしまう事がわかりました。

こうなってしまうと、完全にお手上げです。
各イベント毎にFormのEnabledを見て貰う事にしようと思います。
ありがとうございました。

編集 削除
nanashi  2003-07-01 10:08:03  No: 78406  IP: [192.*.*.*]

ダミーコントロールをフォームの表示領域の外に用意しておいて、
フォームのEnabledをFalseにするタイミングでそっちにSetFocusしてみては?
キーイベントは効いてしまうけどTABで他のコントロールにフォーカスが移ることも無いし。

編集 削除