чтобы Enter нажимал на кнопку

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Quantum18
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 16.03.2010 (Вт) 10:40

чтобы Enter нажимал на кнопку

Сообщение Quantum18 » 10.04.2010 (Сб) 11:09

Привет, народ.

Вопрос наверное простой - но я час уже ищу в нете на него ответ.
Итак: Нужно чтобы в диалоговом окне (да в любом окне) при нажатии на кнопку Enter нажималась определенная кнопка. В vb6 было что-то вроде button1.defoult = true, что делало то, что нужно, а в vb.net не понимаю как это сделать. Причем на форме может быть штук 12 текстовых окон, так что варианты типа отловить нажатие кнопки на текст-боксе не предлагать.

Спасибо.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чтобы Enter нажимал на кнопку

Сообщение iGrok » 10.04.2010 (Сб) 13:05

Quantum18 писал(а):Причем на форме может быть штук 12 текстовых окон, так что варианты типа отловить нажатие кнопки на текст-боксе не предлагать.

Ну это в общем-то и есть единственный вариант.
Потому что упомянутый тобой "default" в vb6 действовал только на одну-единственную кнопку в диалоговом окне...
label:
cli
jmp label

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: чтобы Enter нажимал на кнопку

Сообщение Dakovalev1 » 10.04.2010 (Сб) 15:09

Хм. Было такое в VB 6. button1.default = true .
В vb.net можно сделать button1.select , тогда кнопка выделится. Но так выделять надо перед каждым нажатием. А это геморойно.
Можно в событии keydown при нажатии того, что надо, вызвать событие нажатия кнопки button1.
Но если текстбоксов 12, то оба эти метода мало чем помогут.
Но если тебе не нравится метод перехвата события нажатия enter на каждом текстбоксе только тем,
что много кода надо писать,то вот тебе код, если выполнишь его, то при нажатии на любой текстбокс
кнопка button1 нажмётся :

Код: Выделить всё
For Each t As Control In Me.Controls
            If t.GetType Is GetType(TextBox) Then
                AddHandler t.KeyDown, AddressOf Button1_Click
            End If
Next


Если нужно сделать такое в messagebox, то можно так
Код: Выделить всё
MsgBox("some text", MsgBoxStyle.YesNoCancel Or MsgBoxStyle.DefaultButton1)


Ну вобщем что знал я тебе сказал.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: чтобы Enter нажимал на кнопку

Сообщение 1Steps » 10.04.2010 (Сб) 15:13

Код: Выделить всё
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AcceptButton = Me.Button1
        Me.CancelButton = Me.Button2
    End Sub
Удалена за ненадобностью.

mrs2000
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 78
Зарегистрирован: 05.01.2004 (Пн) 16:53
Откуда: Иркутск

Re: чтобы Enter нажимал на кнопку

Сообщение mrs2000 » 10.04.2010 (Сб) 15:18

Смотри свойсто формы AcceptButton
Gets or sets the button on the form that is clicked when the user presses the ENTER key.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чтобы Enter нажимал на кнопку

Сообщение iGrok » 10.04.2010 (Сб) 17:04

AcceptButton - это для диалогов. Аналог Vb6'ного default.
То, что он хочет, с её помощью не сделать.
label:
cli
jmp label

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: чтобы Enter нажимал на кнопку

Сообщение FireFenix » 10.04.2010 (Сб) 17:48

Можно просто фокус устанавливать на нужную кнопку в каждой форме
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: чтобы Enter нажимал на кнопку

Сообщение iGrok » 10.04.2010 (Сб) 18:49

FireFenix писал(а):Можно просто фокус устанавливать на нужную кнопку в каждой форме

?
Ты представляешь, как будет прыгать фокус при вводе?
label:
cli
jmp label

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: чтобы Enter нажимал на кнопку

Сообщение MIT » 10.04.2010 (Сб) 19:30

Даёшь изучение свойств формы всем и каждому!
Код: Выделить всё
Public Class Form1
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Me.KeyPreview = True
   End Sub
   Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
      If (Me.ActiveControl.GetType Is GetType(TextBox) AndAlso Not DirectCast(Me.ActiveControl, TextBox).Multiline) Then Button1.PerformClick()
      MyBase.OnKeyDown(e)
   End Sub
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      MsgBox("Ололололо ПЫЩЬ ПЫЩЬ Реальнэ ВэБэНэТэ")
   End Sub
End Class
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Quantum18
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 16.03.2010 (Вт) 10:40

Re: чтобы Enter нажимал на кнопку

Сообщение Quantum18 » 11.04.2010 (Вс) 10:44

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.AcceptButton = Me.Button1
Me.CancelButton = Me.Button2
End Sub

- вот это по-ходу то, что я искал

Всем спасибо за жаркое обсуждение


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

    TopList