C #: проблема с Form.AcceptButton - PullRequest
1 голос
/ 22 января 2010

У меня есть форма с кнопкой, которая установлена ​​как кнопка AcceptButton формы. Форма имеет несколько других элементов управления. Теперь, когда я нажимаю Enter на других элементах управления, форма закрывается из-за кнопки подтверждения на форме. То же самое касается кнопки отмены. Как мне справиться с этим. Я попытался подключить к нажатию клавиши keydown событие формы и элементов управления. Ни один не работает. Любая работа вокруг этого?

Спасибо за тонну, Datte

Ответы [ 5 ]

4 голосов
/ 22 января 2010

Так работает свойство AcceptButton. Он определяет кнопку, которая автоматически нажимается при каждом нажатии <Enter>.

Если вы не хотите этого поведения, не устанавливайте его как AcceptButton. Других причин для этого нет.

1 голос
/ 22 января 2010

Вы можете удалить AcceptButton из формы и установить свойство KeyPreview в форме, которая будет обрабатывать его событие KeyDown. Там вы можете проверить наличие клавиши Enter и выполнить соответствующее действие.

1 голос
/ 22 января 2010

Не совсем уверен, как вы ожидаете, что ваша форма будет функционировать, но вы могли бы сделать что-то вроде следующего, чтобы иметь немного больше контроля над вещами:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            // do something
        }
        if (keyData == Keys.Escape)
        {
            // do something else
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
0 голосов
/ 22 января 2010

Попробуйте в VB> net

  If CType(Me.ActiveControl, Button).Name = Button1.Name Then

        End If
0 голосов
/ 22 января 2010

Это одна из особенностей формы, т.е.

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

Установите свойство AcceptButton формы, чтобы пользователи могли нажимать кнопку, нажимая клавишу ВВОД, даже если кнопка не имеет фокуса.

Привет.

...