- - PR -
C# ToolStripContainer上のコントロールで、[Enter]キーでのフォーカス移動がしたいのですが
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-30 13:11
じゃんぬねっとさん回答ありがとうございます。
教えて頂いたコードで実行したところ、 ダイアログが表示されました。 ですが、keyDataの値をウォッチしたところ、 「LButton | MButton | Back」でした。 調べたところ、LButton とか MButton はマウス関連のもののようですね。 ただ、 if ((keyData & Keys.Enter) == Keys.Enter) という部分で「真」となっているので 問題なく[Enter]キーの押下は認識されていると思います。 VBA的に見ると、理解しがたいコードではありますが… 左辺と右辺に同じkeys.Enterがあり、しかも左辺には keyDataがあるので、同じにはならないのではという気もするのですが、 そういったものなのでしょう。 あっ、もしかしたらデバッガの使い方が間違っているのかもしれないです。 「ローカル」というウィンドウで見ていたのですが、 今、自動変数というウィンドウから見てみたところ、 Keys.EnterとKeyDataの両方の値が、 「LButton | MButton | Back」となっていました。 | ||||||||||||
|
投稿日時: 2006-06-30 15:42
ToolStripContainer 内にフォーカスがあるときは
this.ActiveControl に ToolStripContainer が返されるみたい。 Panel とか GroupBox とかのコンテナと違う動作ですね。 で、Form_KeyDown 内の該当箇所を
で、動きました(かなり強引ですが…。) # 汎用性がないなぁ。 | ||||||||||||
|
投稿日時: 2006-06-30 16:56
たつ64さん回答ありがとうございます。
提示していただいたコードで動作することを確認できました。 助かりました、ありがとうございました。 なるほど、toolStripContainerの場合は、 toolStripContainerなのか判断して、 SelectNextControlメソッドでフォーカスを移動ということですか〜。 toolStripContainerにはKeyDownイベントがあるので、 そちらで処理をするのかなと思っていました。 (toolStripContainerのkeyDownイベントはなんのためにあるのかがわからなくなってしまいましたが…) マスタフォームなどには、 このtoolStripContainerが使えると結構便利だなと思いましたので、 質問を寄せさせていただきました。 今までアクセスしかいじったことがなかったのですが、 C#とかで作られた、フリーのソフトなどを見ていると、 用意されているコントロールが豊富なので始めてみようと思ったのですが、 今回の[Enter]キーの件がクリアできないのであれば、 またアクセスで作るというのもアリなのかなと考えていました。 「できる」ということがわかりましたので、 安心してこのコントロールの使用ができます。 ただ、コードや文法など、知識というよりも経験不足をものすごく感じています。 一つ一つのコードに「?」となってます。 自分の意思でコードが書けるようになるには、もう少し時間がかかりそうです… | ||||||||||||
|
投稿日時: 2006-06-30 18:24
解決されたようですが、ちょっとだけ。
ただの論理積ですから、VB でも同様に置き換えることができます。
私の環境ですと 「Return」 と表示されています。 見ている瞬間の状態には依存しないと思いますが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-06-30 19:16
脇道失礼。
あ・・・ 勘定系は関わったことないので、それは思いつきませんでした。 あと、私が左利きなので、書類に置く手は右が多く、[TAB]の方が押しやすい。。。 同じく、考えもしませんでした。 ありがとうございます。 | ||||||||||||
|
投稿日時: 2006-06-30 20:28
私も昔はエンターでフォーカス移動は気持ち悪いというか今風じゃないと思ってました。
しかし仕事で某保険会社に行ったときに初めて、テンキーの部分だけが独立したキーボード を見ました。ほぼすべての人の端末にそれがつながってるんですね。 左手には紙を持ち右手ですばやく入力するんだろうなぁと思ったわけです。 よく考えたら自分も昔、データ入力のバイトしてたとき、時間あたりの処理件数が重要で、 左手には申込書の束、右手で(エンター移動の)高速入力してたのを思い出しましたね。 普通のキーボードでしたが、もしあれがTAB移動だったら面倒だったなぁ、と。 | ||||||||||||
|
投稿日時: 2006-07-01 21:50
じゃんぬねっとさん、回答ありがとうございます。
そうだったんですね、言語の違いではなく、 入力判定のためのものということなのですね。 キー入力判定についても勉強が必要なようです。
再インストールが必要なのかもしれません。 [Enter]キーを押しているのに、 マウスボタンの値となっていのすので… 丁寧に何度も教えて頂きありがとうございました。 このスレッドに関しては、 解決したような気もしますが、 toolStripContainerに用意されたKeyDownイベントは いつ発生するのかという疑問があるので、 海外のサイトなんかも情報を漁ってみたいと思います。 | ||||||||||||
|
投稿日時: 2006-07-03 11:26
じゃんぬねっとさん。
ProcessCmdKeyメソッドでの、[Enter]キーの補足がうまくいっていなかった 原因がなんとなくわかりました。 再インストールしても解決しないため、 ふと、PCのキーボードが差し込まれているところを見たところ、 USBタイプのキーボードでした。 これが原因だと思われます。 たぶんですが… |