С#: проблема с Form.AcceptButton

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

Огромное спасибо, Датте


person dattebayo    schedule 22.01.2010    source источник


Ответы (5)


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

    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);
    }
person Ken    schedule 22.01.2010

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

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

person Aaronaught    schedule 22.01.2010

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

person Faisal    schedule 22.01.2010

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

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

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

С уважением.

person Amit    schedule 22.01.2010

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

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

        End If
person Vibin Jith    schedule 22.01.2010
comment
@stakx: ...если честно, я бы предпочел == - person Matti Virkkunen; 04.11.2011