禁用CheckBox - 仅禁用复选框,而不禁用标签

时间:2015-04-24 09:22:58

标签: windows checkbox label disabled-control isenabled

我在Winforms应用程序中使用CheckBox,如果设置或未设置某些功能,它将向用户显示。如果功能正在当前运行,则CheckBox闪烁(标签在1秒间隔内将颜色从黑色变为灰色)。但在某些情况下,我不希望允许用户设置开/关功能 - 在这种情况下,我禁用CheckBox。但是这个禁用复选框包括其标签,如果功能正在运行,标签不会闪烁。

我的问题是,我是否只能禁用复选框 - 而不是其标签。如果标签未被禁用,它可以闪烁......

1 个答案:

答案 0 :(得分:2)

有很多方法可以解决这个问题。按顺序递增:

1。 CheckBox.AutoCheck属性

当您想要"禁用"时设置CheckBox.AutoCheck = false;该复选框将阻止用户切换它,但它仍然会显示为启用。

2。自定义控件

使用CheckBox CheckBox.Text = "";和单独的Label控件实施您自己的自定义复选框控件。如有需要,只需停用CheckBox,但不能停用Label

3。覆盖OnPaint

创建一个派生自CheckBox的控件并覆盖OnPaint方法。然后,您可以以您喜欢的任何颜色绘制标签部分。棘手的部分是获取盒子的大小和位置以及根据操作系统版本,主题和可访问性设置而变化的标签部分。获取此信息的方法将在以下答案中进行探讨:

我。 Get the size of checkbox

II。 How to get size of check and gap in check box?