В чем логическая разница между PushButtonState.Default и PushButtonState.Normal? - PullRequest
0 голосов
/ 14 января 2019

Я использую ButtonRenderer.DrawButton для столбца с кнопками с изображениями в DataGridView, и меня интересует, когда следует использовать каждое значение PushButtonState.

Здесь является официальной документацией. Там написано:

  • Default - кнопка имеет внешний вид по умолчанию.
  • Disabled - кнопка отключена.
  • Hot - кнопка горячая.
  • Normal - кнопка имеет нормальный вид.
  • Pressed - кнопка нажата.

Те, кого я не очень хорошо понимаю, это Default и Normal. В чем разница между этими двумя ролями? На снимке экрана ниже эти две роли объединены с параметром focused bool, переданным методу ButtonRenderer.DrawButton.

screenshot

1 Ответ

0 голосов
/ 14 января 2019

О состоянии по умолчанию

В соответствии с рекомендациями для пользователей настольных приложений на базе Windows для кнопки управления :

Кнопка команды по умолчанию вызывается, когда пользователи нажимают клавишу Enter. Он назначается разработчиком, но любая командная кнопка становится по умолчанию, когда пользователи вкладывают его.

В окнах форм, чтобы установить кнопку в качестве кнопки по умолчанию для формы, вы можете установить ее как AcceptButton формы. Для получения дополнительной информации см. Как: назначить кнопку Windows Forms кнопкой «Принять» с помощью конструктора

О других штатах

Если вы посмотрите на ButtonStandardAdapter, который отвечает за рисование стандартной кнопки, вы увидите:

private PushButtonState DetermineState(bool up) {
    PushButtonState state = PushButtonState.Normal;

    if (!up) {
        state = PushButtonState.Pressed;
    }
    else if (Control.MouseIsOver) {
        state = PushButtonState.Hot;
    }
    else if (!Control.Enabled) {
        state = PushButtonState.Disabled;
    }
    else if (Control.Focused || Control.IsDefault) {
        state = PushButtonState.Default;
    }

    return state;
}

И IsDefault возвращает true для кнопки, для которой установлено AcceptButton из Form.

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