DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ショートカットキーの優先度について

環境/言語:[Windows2000,VisualStudio2002]
分類:[.NET]

こんにちは、お分かりの方がおられましたら、お教えください。
現在、コンテキストメニューとリッチテキストボックスを持つ、ユーザコントロールを開発しています。
メニューのショートカットには&Delを持つメニューがあります。
この時、リッチテキストボックスから文字を削除しようとしてDelキーを押すと、ショートカットキーの方が動作してしまいます。
目的はテキストボックスで削除キーを押すとボックスの文字が削除されることなのですが、ショートカットを動作させない方法というのはあるでしょうか。
ご教唆いただけますようお願い致します。
■No4793に返信(かつどんさんの記事)

 かつどんさん、こんばんは。深山と申します。

 どのような仕様なのか測りかねるのですが‥‥
> コンテキストメニューとリッチテキストボックスを持つ、ユーザコントロール
で、リッチテキストボックス上以外でのキー操作というのはどういったものを想定しているのでしょうか?
 つまり、このショートカットキーはいつ動作することを期待しているのか?ということなのですけども
解り辛いですよね(^_^;)

 コンテキストメニューに設定されているショートカットキーが有効になるのは、
それを関連付けているコントロールがアクティブなときだけです。
 このユーザコントロールがアクティブになっているとき、フォーカスを持っているのは
子コントールであるリッチテキストボックスなわけで、しかしそのときショートカットキーを
動作させたくないというのは‥‥?
# もしかして他にもコントロールを内包しているのでしょうか?
# 何か勘違いしてたらごめんなさいm(__)m


 前置きが長くなりました。
 回答としてはシンプルに
・ショートカットキーに Del を使用するのを止める
のが一番のような気がします。
 また、根本的な解決にはなりませんけど回避策として
・リッチテキストボックスの Enter , Leave イベントで該当 MenuItem の Enabled
 ( 或いは Shortcut ) プロパティを制御する
という方法も提示させて頂きます。 Enabled が False なっていたり Shortcut が Shortcut.None
になっていれば、ショートカットキーも無効になりますので。
深山さん、こんにちは ご回答ありがとうございます。
>  どのような仕様なのか測りかねるのですが‥‥
>>コンテキストメニューとリッチテキストボックスを持つ、ユーザコントロール
> で、リッチテキストボックス上以外でのキー操作というのはどういったものを想定
> しているのでしょうか?
>  つまり、このショートカットキーはいつ動作することを期待しているのか?と
> いうことなのですけども
> 解り辛いですよね(^_^;)
 親としては、delキーが押された時に自分を削除するイベントを更に上の親に通知
 します(こりゃまた分かりずらい)
 Microsoft Wordで図形描画という機能がありますが、Word上にテキストボックス
 をおいて、中に文字を入れられますよね。編集中はDelキーはテキストの削除に
 使われますが、コントロール自体を選択していたときのDelキーはテキストボックス
 を削除します。
 これと同じような動作をするプログラムを作成中です。現在の問題は編集中に文字を
 削除するためにDelキーを押したにもかかわらず、コントロール自体を削除する
 動きになってしまうことで(^^;)
>
>  コンテキストメニューに設定されているショートカットキーが有効になるのは、
> それを関連付けているコントロールがアクティブなときだけです。
>  このユーザコントロールがアクティブになっているとき、フォーカスを持って
> いるのは子コントールであるリッチテキストボックスなわけで、しかしそのとき
> ショートカットキーを動作させたくないというのは‥‥?
> # もしかして他にもコントロールを内包しているのでしょうか?
> # 何か勘違いしてたらごめんなさいm(__)m
>  前置きが長くなりました。
>  回答としてはシンプルに
> ・ショートカットキーに Del を使用するのを止める
> のが一番のような気がします。
>  また、根本的な解決にはなりませんけど回避策として
> ・リッチテキストボックスの Enter , Leave イベントで該当 MenuItem の
>  Enabled( 或いは Shortcut ) プロパティを制御する
> という方法も提示させて頂きます。 Enabled が False なっていたり Shortcut
> が Shortcut.Noneになっていれば、ショートカットキーも無効になりますので。

 RichEditBox上でコンテキストメニューを出すような操作をしてもDelキーの
 ショートカットを含むコンテキストメニューは表示されないのに、Delキーを
 押した時だけコンテキストメニューの該当するMenuItemの処理に飛ぶのは、
 ちょっと不思議ですがとりあえずDelキーの使用をあきらめようかと思います。

 いろいろお教えいただきありがとうございます。(拝)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板