Arjun Kerala Ответов: 6

Как использовать клавишу enter в VB.NET -что ?


У меня есть форма с примерно 10 текстовыми полями . Теперь мне нужно разрешить пользователю нажать клавишу Enter .

например -:
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.So мне нужно сделать для всех текстовых полей вот так ? Как я могу это сделать ? Кто-нибудь может мне помочь ? Спасибо....

Bernhard Hiller

Это дубликат http://www.codeproject.com/Messages/4607116/Re-How-To-Move-TextBoxes-To-Other-Textboxes-By-Pre.aspx - не выкладывайте свои вопросы дважды!

6 Ответов

Рейтинг:
44

Basmeh Awad

попробовать это
на каждом событии keydown Textbox вам придется написать этот код

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

И так далее


Arjun Kerala

Откройте Дверь Basmeh .Я попробовал твой код.Теперь Все Работает Нормально..Огромное спасибо!

Basmeh Awad

Добро пожаловать:-)

Рейтинг:
38

OriginalGriff

Не.
Это не "нормальное" поведение - ENTER обычно принимает ввод формы и переходит к следующей форме, а TAB перемещается между полями той же формы. Проблема в том, что если вы нарушаете этот механизм, ваше приложение отличается от всех других, к которым привык ваш пользователь, и это вызывает путаницу либо в вашем приложении (и ругается на вас, потому что то, что они ожидают, не произойдет), либо в другом приложении (и ругается на вас, потому что то, что происходит в вашем приложении, просто испортило их работу в другом приложении).)

Это не очень хорошая идея - путать пользователей редко бывает полезно.

Есть ли действительно, действительно хорошая причина, почему вы хотите это сделать?


Tom T

Вы на самом деле делаете предположение здесь; в устаревших/символьных системах ENTER фактически используется для продвижения вперед, и причина этого заключается в том, что устаревший пользователь ожидает этого; т. е.: в этом сценарии вы не сбиваете пользователя с толку, но на самом деле делаете его более нормальным; т. е.: то, что он или она ожидает. Я знаю, вы можете возразить, что этих пользователей следует учить "новой" логике, но куча из них-старые чудаки с толстыми пальцами, которые не хотят находить клавишу tab...

OriginalGriff

Действительно - но поскольку это текстовое поле, оно должно следовать правилам для приложений windows, а не командной строки: даже если оно заменяет устаревшую систему, основанную на cmd.
Если это не так, то пользователи будут еще больше запутаны, так как это приложение "работает так же, как и старое", и ничто другое на компьютере не работает...

Kevin Whitefoot

Я знаю, что отвечаю на старый пост, но я думаю, что важно попытаться бороться с фетишизацией стандартов, "правило" существует для того, чтобы служить пользователям, а не наоборот, и если вы не посмотрите на конкретный случай использования, вы никогда не узнаете, Можно ли разумно применить это правило.

Вы когда-нибудь наблюдали, как клерк по вводу данных или турагент используют программу? Основная часть набора текста происходит на цифровой клавиатуре, и клавиша enter дублируется там и является наиболее естественной для использования. Помните, что многие пользователи специализированных программ используют только эту программу на этом компьютере и могут ожидать, что будут обучены ее использованию, также они в свою очередь ожидают, что клавиши, которые они должны использовать, будут удобными, а клавиша tab не удобна для ввода данных.

Рейтинг:
2

Dhivya Chennai

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


muneebalikiyani

Правильный ответ, но @Basme ответил раньше

Member 11822221

Привет
У меня есть вопрос, так как я новичок в этом деле,
Мне нужно ввести целую страницу текста в текстовый редактор.
Как мне это сделать?
Страница набрана на английском языке в блокноте, и я хочу перенести этот текст на
еще один текстовый редактор, который не позволяет копировать и вставлять.
Поэтому мне нужно написать программу в VB, чтобы ввести текст автоматически один раз,
и остановитесь в конце страницы.
Я написал программу, но она печатает страницу снова и снова.

Может ли кто-нибудь предложить горячо написать эту программу.

Спасибо

Рейтинг:
1

XabiAberasturi

Это решение, которое я использую для VB.NET

1. Набор Keypreview=True в свойствах вашей формы.

2. Поставьте этот код в форме keydown событие:

If (e.KeyData = Keys.Enter) Then
    'for any multiline control, you have to exit to let multiline                  'textbox intro 'keypressing makes line skips.
    If ActiveControl.Name = txtMyMutilineTextBox.Name Then Exit Sub 
    e.SuppressKeyPress = True
    SelectNextControl(ActiveControl, True, True, True, True)
End If


Наслаждайтесь !!!!

Хабьер Aberasturi Larruzea


Рейтинг:
0

Fredrik Bornander

Вы можете попытаться сохранить список TextboxЭС и сосредоточься на одном со следующим TabIndex когда нажата клавиша enter.

Что-то вроде этого может сработать для вас;

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


Надеюсь, это поможет,
Фредрик


Arjun Kerala

Дорогой Фредерик , Большое Вам Спасибо......

Рейтинг:
0

Baloch_khan

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


CHill60

Этому вопросу уже более 3 лет. Вы на самом деле не предоставили "решение" ... просто какой-то довольно плохой код. Избегайте этого пожалуйста

yogesh vaidya

Спасибо, сэр ,
Я попробовал ваш код , и он отлично работает, но не сработал в соответствии с моей инструкцией,
Я хочу выбрать следующий элемент управления , как private sub или любые другие работы ,когда я нажимаю enter, он работает отлично, но когда я нажимаю tab, он перемещается в следующее текстовое поле, как я включаю enter end tab как ту же работу, (yvmail.acc@gmail.com )