【解決方法】VB.NET でエンターキーを使用するには?


約 10 個のテキスト ボックスを含むフォームがあります。 ここで、ユーザーが Enter キーを押せるようにする必要があります。

例えば ​​-:

SQL
Textbox1.Text
Textbox2.Text
Textbox3.Text
Textbox4.Text
Textbox5.Text
Textbox6.Text
Textbox7.Text
Textbox8.Text
Textbox9.Text
Textbox10.Text

最初のテキストボックスに詳細を入力するとき、ユーザーは「ENTER」を押す必要があります。 ユーザーが ENTER ボタンを押すと、カーソルが Textbox2 に移動します。もう一度「Enter」を押すと、カーソルが Textbox 3 に移動します。 どうやって ? 誰でも私を助けることができますか? ありがとう….

解決策 2

これを試して
テキストボックスのキーダウンイベントごとに、このコードを書く必要があります

VB
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            TextBox2.Focus()
        End If
    End Sub
Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
        If e.KeyCode = Keys.Enter Then
            TextBox3.Focus()
        End If
    End Sub

等々

解決策 1

しないでください。
これは「通常の」動作ではありません。通常、ENTER はフォーム入力を受け入れて次のフォームに移動し、TAB は同じフォームのフィールド間を移動します。 問題は、このメカニズムを覆すと、アプリがユーザーが慣れ親しんでいる他のすべてのアプリとは異なることです。これにより、アプリで混乱が生じます (そして、アプリが期待していたことが起こらなかったため、あなたを罵倒します) または他のアプリで(そして、あなたのアプリで起こっていることが別のアプリで彼らの仕事を台無しにしただけなので、あなたを罵倒します)

これは良い考えではありません。ユーザーを混乱させることはほとんど役に立ちません。

なぜこれをやりたいのか、本当に正当な理由はありますか?

解決策 3

リストを保持しようとすることができます Textboxes と次の 1 つに焦点を当てる TabIndex エンターヒット時。

このようなものがうまくいくかもしれません。

VB
Public Class Form1

    Private ReadOnly textBoxes As IList(Of TextBox) = New List(Of TextBox)

    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()

        textBoxes.Add(TextBox1)
        textBoxes.Add(TextBox2)
        textBoxes.Add(TextBox3)
    End Sub

    Private Sub TextBox1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown, TextBox2.PreviewKeyDown, TextBox3.PreviewKeyDown
        If e.KeyCode = Keys.Enter Then
            Dim source As TextBox = CType(sender, TextBox)

            Dim nextTextbox As TextBox = textBoxes.Where(Function(tb) tb.TabIndex > source.TabIndex).OrderBy(Function(tb) tb.TabIndex).FirstOrDefault()
            If nextTextbox Is Nothing Then nextTextbox = textBoxes.First()

            nextTextbox.Focus()
        End If
    End Sub
End Class

お役に立てれば、
フレドリック

解決策 5

VB.NET
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            SendKeys.Send("{TAB}")
        Else
            Exit Sub
        End If
        e.SuppressKeyPress = True 'this will prevent ding sound 
    End Sub

解決策 4

VB
Private Sub textBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox1.KeyDown
    ' Determine whether the key entered is the F1 key. If it is, display Help.
    If e.KeyCode = Keys.Enter Then
        TextBox2.focus
    End If
End Sub 'textBox1_KeyDown

コメント

タイトルとURLをコピーしました