PushButtonState.Default和PushButtonState.Normal之间的逻辑区别是什么?

时间:2019-01-14 12:44:31

标签: c# .net winforms button

我正在将ButtonRenderer.DrawButton用于带有按钮的列,该按钮在DataGridView中具有带有图像的按钮,我对何时应使用每个PushButtonState值感兴趣。

Here是官方文档。它说:

  
      
  • Default-该按钮具有默认外观。
  •   
  • Disabled-该按钮被禁用。
  •   
  • Hot-该按钮很热。
  •   
  • Normal-按钮具有正常外观。
  •   
  • Pressed-按下按钮。
  •   

我不太了解的是DefaultNormal。这两个角色有什么区别?在下面的屏幕快照中,这两个角色与传递给focused方法的bool ButtonRenderer.DrawButton参数结合在一起。

screenshot

1 个答案:

答案 0 :(得分:1)

关于默认状态

根据button control的基于Windows的桌面应用程序的用户体验准则:

  

当用户按下Enter键时,将调用默认命令按钮。   它是由开发人员分配的,但是任何命令按钮都将变为   用户将其切换为默认值。

在Windows表单中,要将按钮设置为表单的默认按钮,可以将其设置为表单的AcceptButton。有关更多信息,请参见How to: Designate a Windows Forms Button as the Accept Button Using the Designer

关于其他州

如果您查看负责绘制标准按钮的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