CheckBox disabled - 仅禁用复选框,不禁用标签
CheckBox disabled - disable only check box, not label
我在我的 Winforms 应用程序中使用 CheckBox,如果设置或未设置某些功能,它会向用户显示。如果当前功能为 运行,则 CheckBox 会闪烁(标签会以 1 秒的间隔从黑色变为灰色)。但在某些情况下,我不想让用户设置 on/off 功能 - 在这种情况下,我禁用了 CheckBox。但是这个禁用复选框包括它的标签,如果功能是 运行,标签不会闪烁。
我的问题是我是否可以只禁用复选框 - 而不是它的标签。如果标签没有被禁用,它可以闪烁...
有多种方法可以解决这个问题。按难度递增顺序:
1。 CheckBox.AutoCheck属性
当您想要“禁用”复选框时设置 CheckBox.AutoCheck = false;
将阻止用户切换它,但它仍将显示为已启用。
2。自定义控件
使用带有 CheckBox.Text = "";
的 CheckBox
和单独的 Label
控件来实现您自己的自定义复选框控件。需要时,只需禁用 CheckBox
而不是 Label
.
3。覆盖 OnPaint
创建一个派生自 CheckBox
的控件并覆盖 OnPaint
方法。然后你可以用你喜欢的任何颜色绘制标签部分。棘手的部分是获取框的大小和位置以及标签部分,这取决于 OS 版本、主题和辅助功能设置。以下答案探讨了获取此信息的方法:
我。 Get the size of checkbox
二。 How to get size of check and gap in check box?
我在我的 Winforms 应用程序中使用 CheckBox,如果设置或未设置某些功能,它会向用户显示。如果当前功能为 运行,则 CheckBox 会闪烁(标签会以 1 秒的间隔从黑色变为灰色)。但在某些情况下,我不想让用户设置 on/off 功能 - 在这种情况下,我禁用了 CheckBox。但是这个禁用复选框包括它的标签,如果功能是 运行,标签不会闪烁。
我的问题是我是否可以只禁用复选框 - 而不是它的标签。如果标签没有被禁用,它可以闪烁...
有多种方法可以解决这个问题。按难度递增顺序:
1。 CheckBox.AutoCheck属性
当您想要“禁用”复选框时设置 CheckBox.AutoCheck = false;
将阻止用户切换它,但它仍将显示为已启用。
2。自定义控件
使用带有 CheckBox.Text = "";
的 CheckBox
和单独的 Label
控件来实现您自己的自定义复选框控件。需要时,只需禁用 CheckBox
而不是 Label
.
3。覆盖 OnPaint
创建一个派生自 CheckBox
的控件并覆盖 OnPaint
方法。然后你可以用你喜欢的任何颜色绘制标签部分。棘手的部分是获取框的大小和位置以及标签部分,这取决于 OS 版本、主题和辅助功能设置。以下答案探讨了获取此信息的方法:
我。 Get the size of checkbox
二。 How to get size of check and gap in check box?