如何在winform c#中禁用按钮时将焦点设置在按钮上?
Posted
技术标签:
【中文标题】如何在winform c#中禁用按钮时将焦点设置在按钮上?【英文标题】:How to set focus on button while button is disabled in winform c#? 【发布时间】:2021-05-21 20:36:02 【问题描述】:我想在 Windows 窗体应用程序中禁用按钮时在按钮中设置焦点。
有没有办法实现这个目标?
背景:
我正在制作一个可供盲人使用的应用程序,因此当按钮启用时,屏幕阅读器将读取按钮内容,但当按钮被禁用时,屏幕阅读器将无法读取按钮内容无法专注于禁用模式
【问题讨论】:
禁用控件的全部意义在于防止它获得焦点。这是基本特征。 "我想为可访问性创建一个类似只读的按钮" 我觉得这很令人困惑。你能详细说明一下吗? @VijayMandanka 你能尝试解绑和绑定点击事件而不是让它禁用吗,对你有帮助吗? @MongZhu 我正在制作一个可供盲人使用的应用程序,因此当启用按钮时,焦点屏幕阅读器将读取按钮内容,但当禁用按钮时则无法读取通过屏幕阅读器,因为按钮无法专注于禁用模式。 为什么不添加此附加信息:在您取消挂钩事件时将“禁用”添加到按钮的文本中。这样,读者甚至可以将这些信息提供给用户 【参考方案1】:您可以尝试通过下面的代码添加和删除点击事件,而不是在C#中启用和禁用按钮。
用于移除点击事件
button.Click -= button_Click;
用于添加点击事件
button.Click += button_Click;
供参考,您可以参考以下链接。
How to subscribe to and unsubscribe from events (C# Programming Guide)
【讨论】:
【参考方案2】:您可以创建自定义控件并在自定义控件中创建一个属性。使用该属性来检查 OnClick 是否需要触发。
例如:
public class buttonReadonly: Button
private bool _isReadOnly = false;
public bool isReadOnly
get
return _isReadOnly;
set
_isReadOnly = value;
protected override void OnClick(EventArgs e)
if (!isReadOnly)
base.OnClick(e);
【讨论】:
以上是关于如何在winform c#中禁用按钮时将焦点设置在按钮上?的主要内容,如果未能解决你的问题,请参考以下文章