No.2ベストアンサー
- 回答日時:
Button等のコントロールには直接ショートカットキーを指定できませんので、KeyDownイベント等でキー状態で判別するしかありません。
> クリックイベントとKeyDownイベントに対して同一のイベントハンドラーにする方法
以下はかなりトリッキーな方法なので、素直にClickとKeyDownとで別々にイベントハンドラを作って、共通の処理メソッドを呼び出す方法を推奨します。
(ショートカットキーが「Ctrl + A」の時)
// InitializeComponent()の中
// またはButtonの動的生成場所
this.button1.Click += new System.EventHandler(this.button1_Click);
this.button1.KeyDown += new System.Windows.Forms.KeyEventHandle(this.button1_Click);
// 共通のイベントハンドラ
private void button1_Click(object sender, EventArgs e)
{
if (e.ToString() == "System.Windows.Forms.KeyEventArgs") {
// KeyDownのイベントならキー状態を判別
KeyEventArgs k = (KeyEventArgs)e;
if (!(k.Control && (k.KeyCode == Keys.A))) {
// Ctrl + A 以外のKeyDownは除外
return;
}
}
// イベントの処理
}
ご丁寧なご回答を頂きましてありがとうございました。とても参考になりサンプルの方法をそっくり適用させて頂き、目的の機能をを実現することができました。非常にありがたく感謝いたしております。
私が作成中のプログラムの背景と今後の課題とを参考までに説明申し上げます。
視覚障害者のグループからC#を学びたいとの要望があり、基礎学習から皆様と勉強を始め、これまで当方からたくさんのサンプルプログラムを提供しております。これらのプログラムではボタンの選択時に、連続したタブキー操作により各ボタン名を音声表示するようにしております。ところが慣れてくると連続タブキー操作で目的の機能ボタンを探すのは、手間がかかり効率の悪さが問題になっており、目的機能ボタンを一発で使いたいと強く求めらておりました。彼等の記憶力は常人より格段に強く、プログラム利用2回ぐらいで、全てのボタン名を覚えてしまうので、この要望も無理ももないと思います。
今回のご教示頂きました方法では、目的ボタンにフォーカスがないと、ショトカットキーが働かないことが判りましたので、多少の変更を加えてみました。まずフォーム上でショートカットキーを受け取り、キーによりボタン判別を行い、そのボタンにフォーカスを当て、もう一度ショートカットキーを押して貰うようにし、その段階でご教示の方法を使っております。これでほぼ満足のできるレベルになったのではないかと思っておりますが、ショートカットキーの二回押しではなんともスマートでなく、今後の課題になっております。
また質問投稿した場合はどうかお助けくださいますようお願いいたします。本当にありがとうございました。
No.1
- 回答日時:
C#知らないんでとんでもない事をいっているのかもしれませんが
ショートカットキーってキャプションに & つければそれで終わりと違うんでしょうか?
言語違いますがそうするだけでそのショートカットで
クリックイベントが発生したと記憶しています
仮にそうならないならKeyDounイベントでそのボタンへのクリックイベントを
飛ばすってのはダメでしょうか?
場合によっては直接イベント関数コールしてもいいような気がするんですが
問題あるんでしょうか?(これならサンプル言うほどのこと無いですよね?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
-
4
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
OpenFileDialogを使った後にもう一度開くと以前のファイルを表示させたい。
Visual Basic(VBA)
-
7
Labelコントロールに数字を代入する
C言語・C++・C#
-
8
【C#】textBoxの指定行のデータを削除
C言語・C++・C#
-
9
C#で起動時のフォームを非表示にした後、Showで表示したいのですが
その他(プログラミング・Web制作)
-
10
C#で複数列をもつデータソースとするコンボボックスの使い方
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
コマンドボタンやイメージにマ...
-
ユーザーフォームに別シートか...
-
[VB.net] ボタン(Flat)のEnable...
-
閉じると「+」になり開くと「-...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
アイコンとボタンの違い
-
VB.net でトグルボタンを実現し...
-
Access VBA でデータペーストを...
-
VBAで多数のプログラムを一つの...
-
VB6でマルチスレッド?
-
VBでのエラー音の消し方
-
ボタンの枠線の様なものを消したい
-
リストボックス 何も洗濯され...
-
角の丸いボタン作成について質...
-
[Excel VBA]コマンドボタンの入...
-
TextBoxでEnterキーを押すと、...
-
VB.NETでマウスクリックイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
アイコンとボタンの違い
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
セルをマクロのボタンにしたい。
-
VBA マクロでの網掛けについて
-
VB.net でトグルボタンを実現し...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
VBAで多数のプログラムを一つの...
-
プロシージャからイベントをコ...
-
VBA でのボタンの移動について
-
VBAでオプションボタンによって...
-
[Excel VBA]コマンドボタンの入...
おすすめ情報