Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Нажатие Enter в TextBox


Автор: pretender 15.1.2008, 22:22
У меня на форме есть TextBox так вот для отслеживания нажатия клавиши Enter я добавил код:
Код

Private Sub FlatEdit1_KeyPress(KeyAscii As Integer)
 Select Case KeyAscii
    Case 13
     SendKeys "{Enter}"
   End Select
End Sub


При нажатии в TextBox клавиши Enter происходит множестенное нажатие клавиши. Я из колонок слышу звук который длится минут 10, т.е. офигеть сколько раз была нажата клавиша.

Как с этим бороться? Что я написал не так?

Автор: cardinal 15.1.2008, 23:19
pretender, ну предполагаю, что ты посылаешь Enter и сразу его сам и ловишь, потом опять посылаешь Enter и т.д. по кругу... smile Предлагаю ввести состояние "я послал Enter" и если ты в этом состоянии, то строчку
Код

Case 13
     SendKeys "{Enter}"

не исполнять.

Автор: pretender 16.1.2008, 00:04
У меня рядом с TextBox есть Button при нажатии на который происходит действие. Так вот мне нужно было при нажатии Enter в TextBox передать нажатие на Button.
Сделал вот так:

Код

Private Sub FlatEdit1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        PushButton
    End If
End Sub

Public Sub PushButton()
        PushButton1.SetFocus
        SendKeys "{Enter}"
End Sub


Может можно как то упростить?

Автор: Akina 16.1.2008, 00:35
Ну например
Код

Dim Flag As Boolean

Private Sub FlatEdit1_KeyPress(KeyAscii As Integer)
 Select Case KeyAscii
  Case 13
   If Flag Then
    Flag = False
    SendKeys "{Enter}"
    Flag = True
   End If
 End Select
End Sub

Автор: cardinal 16.1.2008, 12:42
Цитата(pretender @  15.1.2008,  23:04 Найти цитируемый пост)
Так вот мне нужно было при нажатии Enter в TextBox передать нажатие на Button.

А у твоей кнопки есть вообще-то функция и нажимать на нее, чтобы выполнить эту функцию необязательно!

Автор: pretender 16.1.2008, 14:04
Цитата(cardinal @ 16.1.2008,  12:42)
А у твоей кнопки есть вообще-то функция и нажимать на нее, чтобы выполнить эту функцию необязательно!

К сожалению от кнопки нельзя избавиться, она нужна для визуализации, т.е. если будет только TextBox то не очевидно что нужно нажать Enter чтобы произошло действие. А отдельной функией я не делал, нет смысла, пусть лучше кнопка нажимается.
Всем спасибки!!!

Автор: bom 16.1.2008, 14:27
Цитата(pretender @  16.1.2008,  03:04 Найти цитируемый пост)
Код

Private Sub FlatEdit1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
 PushButton
End If
End Sub

Public Sub PushButton()
PushButton1.SetFocus
SendKeys "{Enter}"
End Sub

Может можно как то упростить?

Мона
Код

Private Sub FlatEdit1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        PushButton1_Click
    End If
End Sub


Автор: cardinal 16.1.2008, 20:25
Цитата(pretender @  16.1.2008,  13:04 Найти цитируемый пост)
А отдельной функией я не делал, нет смысла, пусть лучше кнопка нажимается.

То есть и у кнопки нет никакого Sub'a? smile 

Автор: pretender 17.1.2008, 00:43
Цитата(cardinal @ 16.1.2008,  20:25)
То есть и у кнопки нет никакого Sub'a? smile

Sub - есть, Function - нет 

Автор: cardinal 17.1.2008, 01:38
А тебе не все равно?

Цитата(MSDN)

All executable code must be inside a procedure. Use a Sub procedure when you do not need to return a value to the calling code. Use a Function procedure when you need to return a value.

http://msdn2.microsoft.com/en-us/library/dz1z94ha.aspx

Автор: pretender 17.1.2008, 01:45
Да забей ты, главное что вопросик мой разрешился  smile 

Вот еще бы ты с другим вопросиком помог и было бы  smile 

Автор: cardinal 17.1.2008, 01:50
Я просто хотел сказать, что
Код

SendKeys "{Enter}"

в данном случае лабуда! smile 

Автор: pretender 17.1.2008, 01:56
Я уже понял  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)