c# - PushButtonState.Default 和 PushButtonState.Normal 之间的逻辑区别是什么?
问题描述
我ButtonRenderer.DrawButton
在 DataGridView 中使用带有图像按钮的列,并且我对何时PushButtonState
应该使用每个值感兴趣。
这是官方文档。它说:
Default
- 按钮具有默认外观。Disabled
- 该按钮被禁用。Hot
- 按钮很热。Normal
- 按钮外观正常。Pressed
- 按钮被按下。
我不太了解的是Default
和Normal
。这两个角色有什么区别?focused
bool
在下面的屏幕截图中,这两个角色与传递给ButtonRenderer.DrawButton
方法的参数结合在一起。
解决方案
关于默认状态
根据用于按钮控制的基于 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
的按钮。AcceptButton
Form
推荐阅读
- android - 未经 WRITE_SETTINGS 明确许可设置自定义铃声
- python - 比较两个字典时输入错误
- java - 在 protobuf 中重命名枚举值 - 向后兼容性
- javascript - 连续播放 mp3 声音样本时移相器警告“音频源已存在”
- r - R根据层次结构数据中的儿子删除父亲行
- c# - 在 from 子句中使用的 OleDb 参数
- java - 使用 CriteriaBuilder 在多列中搜索文本
- laravel - restapi 中的 laravel 身份验证
- javascript - Hyperledger composer:在更新资产的事务中调用查询返回旧结果
- php - php用逗号转换字符串以在MySQL中查询