電子書籍の厳選無料作品が豊富!

vb2015(vb.net)でプログラムを作成しています。
テキストボックスで入力後enterを押して
ボタンにフォーカスが移動するようにしているのですが
クリックした状態になります。
ボタンにフォーカスだけをあてるには
どしたらよいでしょうか。
tabで進めるのは問題ないです。
enterで次の項目に進めるのは仕様なので
よろしくお願いします。

A 回答 (2件)

トラブルが発生していると言うのになぜコードを提示しないのでしょうか・・・



Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 me.KeyPreview = True
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 MessageBox.Show("hoge")
End Sub

Private Sub Form1_KeyDown(sender As Object e As EventArgs) Handles MyBase.KeyDown
 If e.KeyCode = keys.Enter Then
  If e.Control = False Then
   me.Button1.Focus()
  End If
 End If
End Sub

または

Private Sub TextBox1_KeyDown(sender As Object e As EventArgs) Handles TextBox1.KeyDown
 If e.KeyCode = keys.Enter Then
  If e.Control = False Then
   me.Button1.Focus()
  End If
 End If
End Sub

フォームの KeyDown イベントとテキストボックスの KeyDown イベントのどちらで試しても相手先ボタンの Clicke イベントは発動しませんが。
    • good
    • 0
この回答へのお礼

tabはKeyDown通過しないんですねーーーぇ。
Private Sub TextBox1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
   If e.KeyCode = Keys.Tab Then
MsgBox('Tab') '--化けるのでsingle quotationで失礼
End If
'あえてEnterも書きました、ここも通過しますね
If e.KeyCode = Keys.Enter Then
MsgBox('enter') '--化けるのでsingle quotationで失礼
'--ボタンにフォーカスするとクリックしやす。
'Button1.Focus()
End If
End Sub
おさわがせしました。

お礼日時:2016/09/28 10:33

回答ではないのですが、テキストボックスでENTERを押すと「既定のボタン」が


押されるというのが「Windowsの仕様」なので、VBのフォームの中だけそこを
無理やりいじっちゃうと結構ちぐはぐなことになりますよ。

お客さんが、Windows の共通ダイアログでもそうしろといった瞬間
破たんします(治せない)。そうならないことを祈ってます。
    • good
    • 0
この回答へのお礼

あまあまVb6のPGをvb2015に移植してんだけど
KeyDown,KeyPerssが変わってんだよねーーぇ。
あとmsgboxでポップアップすると進み方が
lostfocus、次の項目gotfocus次の項目lostfocus
etc....って動くんですよーーーぅ。
ieでフォーカスの順番とか
検索しも書いてあるようにすすまないですよーーーぅ。
1つ教くーーん、ヴァリデーティングでmsgbox出すと
めちゃくちゃに動くんですよーーーぅ。
だからラベルに出すしかないねーーーぇ。
しっかりしろMS##
お客の口調が<‘ヘ ’メ>な風なんで逆らえないんですよーーーぅ。
逃げたいんですよーーーーぅ。

お礼日時:2016/09/28 10:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!