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

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

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

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

3235閲覧

VB.net EnterKeyの制御について

sakaka

総合スコア20

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1グッド

0クリップ

投稿2021/05/31 06:40

いつもお世話になっております。
今回の質問なのですが、エンターキーについてです。
現在電卓を製作中です。
下の図のようにカーソルがエンターキーにある間は、エンターキーを押しても反応します。しかし、2つ目の画像のときはカーソルが移動しているため、エンターキーを押しても、カーソルのあるボタンが反応してしまいます。そのような、カーソルの位置が変わったときでも、エンターキーが反応できる方法を教えてもらいたいです。どうぞ、よろしくお願いいたします。
イメージ説明
イメージ説明

Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
Select Case e.KeyChar
Case "+"
If txt1.Text = STRBTN2 Then
Exit Sub
ElseIf txt1.Text = STRBTN3 Then
Exit Sub
ElseIf txt1.Text = STRBTN4 Then
Exit Sub
ElseIf txt1.Text = STRBTN5 Then
Exit Sub
End If
btnaddition_Click(Me, EventArgs.Empty)
Case "-"
If txt1.Text = STRBTN2 Then
Exit Sub
ElseIf txt1.Text = STRBTN3 Then
Exit Sub
ElseIf txt1.Text = STRBTN4 Then
Exit Sub
ElseIf txt1.Text = STRBTN5 Then
Exit Sub
End If
btnsubtraction_Click(Me, EventArgs.Empty)
Case "*"
If txt1.Text = STRBTN2 Then
Exit Sub
ElseIf txt1.Text = STRBTN3 Then
Exit Sub
ElseIf txt1.Text = STRBTN4 Then
Exit Sub
ElseIf txt1.Text = STRBTN5 Then
Exit Sub
End If
btnmultiplication_Click(Me, EventArgs.Empty)
Case "/"
If txt1.Text = STRBTN2 Then
Exit Sub
ElseIf txt1.Text = STRBTN3 Then
Exit Sub
ElseIf txt1.Text = STRBTN4 Then
Exit Sub
ElseIf txt1.Text = STRBTN5 Then
Exit Sub
End If
btndivision_Click(Me, EventArgs.Empty)
Case "6"
btn6_Click(btn6, EventArgs.Empty)
Case "0"
btn0_Click(btn0, EventArgs.Empty)
Case "1"
btn1_Click(btn1, EventArgs.Empty)
Case "2"
btn2_Click(btn2, EventArgs.Empty)
Case "3"
btn3_Click(btn3, EventArgs.Empty)
Case "4"
btn4_Click(btn4, EventArgs.Empty)
Case "5"
btn5_Click(btn5, EventArgs.Empty)
Case "7"
btn7_Click(btn7, EventArgs.Empty)
Case "8"
btn8_Click(btn8, EventArgs.Empty)
Case "9"
btn9_Click(btn9, EventArgs.Empty)
Case "."
If txt1.Text = STRBTN2 Then
Exit Sub
ElseIf txt1.Text = STRBTN3 Then
Exit Sub
ElseIf txt1.Text = STRBTN4 Then
Exit Sub
ElseIf txt1.Text = STRBTN5 Then
Exit Sub
End If
btnkanma_Click(btnkanma, EventArgs.Empty)
End Select
End Sub
''' <summary>
''' バックスペース、エンター、dleteキーが押されたとき
MyBase.KeyDown
Select Case e.KeyCode
Case Keys.Back
btndeletion_Click(Me, EventArgs.Empty)
Case Keys.Enter
btnequal_Click(Me, EventArgs.Empty)
Case Keys.Delete
btnall_Click(Me, EventArgs.Empty)
End Select
End Sub

fukumaruku👍を押しています

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

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

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

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

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

YAmaGNZ

2021/05/31 06:53

どのボタンにフォーカスが当たっていたとしてもエンターキーを押した時は「=」ボタンを押したことにしたいということでしょうか?
sakaka

2021/05/31 06:57

返信ありがとうございます。 はい!そのようにしたいです。
退会済みユーザー

退会済みユーザー

2021/05/31 07:30

コードは ``` と ``` で囲ってください(``` はバッククォート 3 つ)。インデントされて読みやすくなるので。
sakaka

2021/05/31 07:56

勉強になります。やってみます!!
guest

回答1

0

ベストアンサー

VBNET

1Private Sub Button_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles btn1.PreviewKeyDown, btn2.PreviewKeyDown 2 If e.KeyCode = Keys.Enter Then 3 btnequa.PerformClick() 4 e.IsInputKey = True 5 End If 6End Sub

といった感じでPreviewKeyDownイベントにてエンターキーが押された時にイコールのボタンをクリックしたことにし、そのボタンにてクリックイベントが発生しないようにします。

もしくは、エンターキーの無効化だけ行い、フォームのAcceptButtonプロパティにエンターキーが押された時に押したことにしたいボタンを設定するという方法もあります。

VBNET

1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 2 Me.AcceptButton = Me.btnequa 3End Sub 4 5Private Sub Button_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles btn1.PreviewKeyDown, btn2.PreviewKeyDown 6 If e.KeyCode = Keys.Enter Then 7 e.IsInputKey = True 8 End If 9End Sub

投稿2021/05/31 07:24

YAmaGNZ

総合スコア10489

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

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

sakaka

2021/05/31 07:55

ありがとうございました!!無事エンターキーが押せれるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問