
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で質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) PC利用中に勝手に起動する窓を消し去る方法を教えて下さい。 1 2023/05/08 16:48
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Windows 10 Windowsのショートカットキーの割り当てについて質問です。 Ctrl+Shift+Rという入力を 1 2022/11/07 09:53
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
- Windows 10 Windows10でボリュームのアップダウンを簡単にできる方法ないですか? 1 2023/06/20 13:06
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) PythonのプログラムのDirに関する質問です 3 2022/12/04 17:01
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 1 2022/06/18 21:20
- C言語・C++・C# visual studioでフォームデザインを作成する時のVB.netとC#の違い 2 2023/06/22 03:04
このQ&Aを見た人はこんなQ&Aも見ています
-
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
-
4
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
5
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
6
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
7
CloseとDisposeの違い
Visual Basic(VBA)
-
8
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
9
矢印(左右)キーでイベントを発生させたい。
Visual Basic(VBA)
-
10
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
11
フォームの存在をチェックする方法
Visual Basic(VBA)
-
12
C#についてText Boxの枠
その他(ソフトウェア)
-
13
フォームの再読み込み
Visual Basic(VBA)
-
14
panelのスクロール表示について
Visual Basic(VBA)
-
15
C# ログイン画面からメイン画面への画面遷移について
C言語・C++・C#
-
16
C# formの2重起動禁止
C言語・C++・C#
-
17
CellEnterイベント仕様について
Visual Basic(VBA)
-
18
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
19
C# Listを使わずに2次元配列の動的確保をしたいです。
C言語・C++・C#
-
20
C# Form上に配置されたコントロールに重なるように透過GIF(PNG)を表示したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
コマンドボタンの文字色
-
バックスペース機能の作り方
-
VBAでオプションボタンによって...
-
テキストBOXについて
-
閉じると「+」になり開くと「-...
-
プログラム間のデータ引き渡し
-
プロシージャからイベントをコ...
-
コマンドボタンやイメージにマ...
-
アイコンとボタンの違い
-
VBA IE ダウンロード ダイアロ...
-
Excel VBA Application.caller...
-
VB.net でトグルボタンを実現し...
-
VBA CommandButtonの文字ずれ
-
VBAで多数のプログラムを一つの...
-
C#でSendInputを使ったサンプル...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
ボタンの文字色を変更したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
VBA CommandButtonの文字ずれ
-
Excel VBA Application.caller...
-
C#プログラムで、ボタンをショ...
-
フォームの再読み込み
-
コマンドボタンやイメージにマ...
-
[VB.net] ボタン(Flat)のEnable...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
VB.net でトグルボタンを実現し...
-
プロシージャからイベントをコ...
-
アイコンとボタンの違い
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
おすすめ情報