質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Q&A

解決済

2回答

3561閲覧

ショートカットキー設定について

Strauss

総合スコア32

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

0グッド

0クリップ

投稿2015/07/31 05:26

こんにちは。

電卓をVBにて作っている者です。
現在Windowsに標準搭載されている電卓の機能をお手本に
階乗の機能というのを実装しようとしています。

また、ショートカットキーとしてキーボードからの入力にも反応させようと
設定しているのですが、Windowsの電卓と同じような動きをしません。

VB

1Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown 2 'キーボードから!が入力された場合 3 If e.Shift And e.KeyCode = Keys.D1 Then 4 BtnFactorial.PerformClick() 5 End If 6End Sub

イメージ説明
設定してみるとどうも、自分が作成した電卓ではすでに1を押している判定になっています。
実際にはWindowsの電卓と同じように fact(0) の 1 と表示させたいのですが

自分が書いたキーイベントの構文がおかしいのでしょうか。
ぜひご教授いただけませんでしょうか。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

例えば、

VB

1 'キーボードから!が入力された場合 2 If e.Shift And e.KeyCode = Keys.D1 Then 3 BtnFactorial.PerformClick() 4 End If

上記コードより上側の処理に、

VB

1 'キーボードから1が入力された場合 2 If e.KeyCode = Keys.D1 Then 34 End If

が、あるとか?

投稿2015/07/31 07:03

ta-kun

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Strauss

2015/07/31 07:23

その処理はあります。この部分の処理が重なって実行されているのが今わかりました。 回避方法としては別のものを使う必要があるのでしょうか?
ta-kun

2015/07/31 07:36 編集

キーボードから1が入力された場合 If Not e.shift And e.KeyCode = Keys.D1 Then : End If とすれば、良いと思います。
ta-kun

2015/07/31 07:55

補足です。 e.Alt、e.Control、e.Shiftの状態で大きく処理を分けるのがいいと思います。
Strauss

2015/08/04 05:31

キーボードから1が入力された場合の箇所を上記のように修正して ちゃんと動くことが確認できました。 ありがとうございます!
guest

0

未確認で大変申し訳ないのですが、IF文を以下に変更するといかがでしょうか?

vb.net

1If e.KeyChar = "!" Then

投稿2015/07/31 05:52

rik

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Strauss

2015/07/31 06:12

構文を変更し確認したところ、表示される内容は変わりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問