2009-03-30 9 views
2

私はC#とWPFを使用して大規模なビジネスアプリケーションを開発しています。私たちの標準は、すべてのフォーム(保存、キャンセル、検索など)にボタンのアクセラレータキーを含めることです。私は最近、フォームがロードされたときに、ユーザーが "Alt"キーを押さなくてもアクセルキーがアクティブであることに気づいた。たとえば、検索ボタンはアクセラレータとして「Alt-H」を使用しますが、ユーザーは単に「H」を押すだけで検索を開始できます。私はアクセラレータキーを作成するために、ボタンの内容に標準の "_"を使用しています。Visual StudioのようなWPFアクセラレータキー

<Button Content="Searc_h"/> 

は、他の誰がこの行動に気づいていますし、誰もが押される「Altキー」キーを必要とし、適切な回避策を発見しましたか?

答えて

1

この記事ではSara Ford's Weblogがこの現象について説明しています。

コメンターが解決策としてこれを言及:

「あなたがアプリケーションを書いていると、あなたは、この動作を好きWM_CHANGEUISTATEを調べ、具体的にUISF_HIDEFOCUSフラグない場合。」

-1

実際には、WPFのコマンドパターンを使用すると、キーボードショートカットが許可される範囲を細かく制御できます。ボタンのテキストの "_"よりもさらに進んでいます。

http://www.switchonthecode.com/tutorials/wpf-tutorial-command-bindings-and-custom-commands

編集: - 新しいリンクを提供し、以前のリンクが死んでいた

は、詳細については、以下のリンクをチェックしてください。

-Doug

+0

リンクが切れています。 – greenoldman

+0

リンクがもう一度死んだ –

+0

笑、それは今朝私のために働く。私は自分のサイトに安定性の問題があるのだろうかと思います... – Doug

3

アンダースコアを一切入れないで、ウィンドウに追加しないでください。

<Window.InputBindings> 
    <KeyBinding Command="Help" Key="H" Modifiers="Alt"/> 
    </Window.InputBindings> 
+6

これは、神の愛のために、OPが求めていることを実現しているが、しないでください。ブレーク。標準。機能性。に。目的。すべてのアクセラレータキーは、常にそのように機能しています。 –

+1

+1彼はOPの質問に答えたのは唯一の人だったからです。多分OPはこれに選択肢がないのでしょうか?場合によっては、管理者がそれを必要とするため、あなたがしたくないことをしなければなりません。 – Vaccano

8

これは、テキスト入力がフォーカスされていないときは、Windowsのアクセラレータキーの標準的な動作です。それを中断しないでください。

これはあなた自身で確認できます。 Win + Rキーを押して "実行..."ダイアログを表示させ、Tabキーを押してフォーカスを合わせ、 "B"を押します。 "参照"ボタンが有効になります。

これは、単純なY/N(Alt + Y/Alt + Nではなく)でこれらのMessageBoxプロンプトに答えることができる理由です。

+6

絶対に。絶対に。完全に。(私が* user *の時)私にとって最も不満なのは、プログラマが何か巧妙な、あるいはさらに悪いことをしようとしたために、突然何らかのランダムプログラムで失敗する*標準の機能* *故意にそれを壊した* ... – Timwi

+0

+1; OSのデフォルトの動作に対して動作するアプリケーションを作ってはいけません。 – Mizipzor

関連する問題