投稿者 hori  (社会人) 投稿日時 2023/12/12 19:40:04
win10 VS2019 のVBで書いています。

フォーム2つにそれぞれボタンを1つずつ貼り付け下記のように書きました。

=========================================

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim f As New Form2

        If f.ShowDialog(Me) = DialogResult.OK Then

            MsgBox("ok")

        Else

            MsgBox("no")

        End If

    End Sub

End Class

==========================================

Public Class Form2

    Public Overloads Function ShowDialog(ByVal Owner As IWin32Window) As DialogResult

        Return Me.ShowDialog()

    End Function


    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Button1.Select()

    End Sub


    Private Sub Button1_MouseUp(sender As Object, e As MouseEventArgs) Handles Button1.MouseUp

        Me.DialogResult = DialogResult.OK

        Me.Close()

    End Sub

    Private Sub Button1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Button1.PreviewKeyDown

        MsgBox(e.KeyCode.ToString())

        If e.KeyCode = Keys.Return Or e.KeyCode = Keys.Tab Or e.KeyCode = Keys.Enter Then

            MsgBox("pkd")

            Me.DialogResult = DialogResult.OK

            Me.Close()

        End If

    End Sub

End Class

============================================

このプログラムで Form2 に行った後、
[ボタンクリック]か[タブキーを押す]と Form2 を終われますが
[エンターキー]では、2つあるのにどちらを押しても終われません。
ちなみに[エンターキー]では、KeyCode = Return と示され
メッセージボックスの[pkd]も表示されます。
なのに、Form2 はクローズされず Form2 のボタンにフォーカスされた状態に戻ります。

10年ほど前に、るきおさんにご教授頂いた方法を使えば
テンキー横の[エンターキー]で終われるようにできますが
そもそも、このプログラムで[エンターキー]が機能しない理由を知りたいです。

判る方居られましたら、ご教示お願いいたします。