首页 > 解决方案 > PushButtonState.Default 和 PushButtonState.Normal 之间的逻辑区别是什么?

问题描述

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

是官方文档。它说:

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

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

截屏

标签: c#.netwinformsbutton

解决方案


关于默认状态

根据用于按钮控制的基于 Windows 的桌面应用程序的用户体验指南:

当用户按下 Enter 键时,会调用默认命令按钮。它是由开发人员分配的,但是当用户选择它时,任何命令按钮都会成为默认按钮。

在 windows 窗体中,要将按钮设置为窗体的默认按钮,可以将其设置为窗体的默认按钮AcceptButton。有关详细信息,请参阅如何:使用设计器将 Windows 窗体按钮指定为接受按钮

关于其他州

如果你看一下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返回一个设置为atrue的按钮。AcceptButtonForm


推荐阅读