没有焦点。事实上,它确实有焦点,您可以通过按空格键选中/取消选中控件来演示。如果您选择Tab然后移回复选框,则Tab将被勾勒出轮廓以指示焦点。通过使用复选框、文本框和按钮控件创建新表单来轻松进行测试。Tab键顺序设置为该顺序。启动表格。没有迹象表明该复选框具有焦点。Tab浏览控件,当您返回到文本框时,它将被勾勒出来。我尝试以Load和Shown方法的形式使用Control.Focus()和Control.Select()以编程方式设置焦点。启动表单时如何使复选框成为焦点?这是标准行为。正如您所指出的,由于该控件是Tab键顺序中的第一个控件并且可以获得焦点,因此它实际上是在表单首次显示时获得焦点。问题是,自Windows2000起,焦点矩形和带下划线的助记符默认隐藏。在您开始使用键盘界面与程序交互之前,它们不会出现。只需按Alt键即可显示它们。所以实际使用Tab和Shift+Tab。这个想法是为了减少Windows中的视觉噪音,即菜单和窗口中的焦点指示器和访问键下划线。从美学上讲,这些东西令人分心和恐惧。从功能上讲,它们仅在您通过键盘导航时才有用。当您只使用鼠标时,它们不会增加显着的价值。事实上,它们通常是多余的。为什么现在?每件好事都必须从某个地方开始。Windows看起来更干净、更简单。[…]当然,当用户进行键盘导航演示时,键盘灯会返回。指示器将适当地出现和消失。最后,如果您根本不喜欢这种行为,您可以从“显示”控制面板中禁用它。所以你没有做错任何事。以编程方式使用Select或Focus或等效项不会导致显示焦点矩形。控件已经集中。您可能只能做两件事:更改您的系统设置,以便始终显示焦点指示器。由于这是一个全局设置,它只能由最终用户操作,而不是由您的应用程序操作。因此,无需调用API函数来执行此操作,只需访问控制面板即可。覆盖控件的绘制行为并强制它绘制焦点指示器,而不管系统认为它应该做什么。您可以使用完整的所有者绘制控件来执行此操作,但使用此控件类可能更容易:publicclassForcedFocusCheckBox:CheckBox{protectedoverrideboolShowFocusCues{get{但老实说,你不应该做这些事情。这是一个标准的平台约定。所有内置对话框都会发生同样的事情。如果用户还不知道,他或她可能没有进行太多的键盘交互,他们不希望按空格键来切换您的复选框。他们只用鼠标。以上为C#学习教程:C#Winforms复选框不代表重点分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
