我在Winforms应用程序中使用CheckBox,如果设置或未设置某些功能,它将向用户显示。如果功能正在当前运行,则CheckBox闪烁(标签在1秒间隔内将颜色从黑色变为灰色)。但在某些情况下,我不希望允许用户设置开/关功能 - 在这种情况下,我禁用CheckBox。但是这个禁用复选框包括其标签,如果功能正在运行,标签不会闪烁。
我的问题是,我是否只能禁用复选框 - 而不是其标签。如果标签未被禁用,它可以闪烁......
答案 0 :(得分:2)
有很多方法可以解决这个问题。按顺序递增:
当您想要"禁用"时设置CheckBox.AutoCheck = false;
该复选框将阻止用户切换它,但它仍然会显示为启用。
使用CheckBox
CheckBox.Text = "";
和单独的Label
控件实施您自己的自定义复选框控件。如有需要,只需停用CheckBox
,但不能停用Label
。
创建一个派生自CheckBox
的控件并覆盖OnPaint
方法。然后,您可以以您喜欢的任何颜色绘制标签部分。棘手的部分是获取盒子的大小和位置以及根据操作系统版本,主题和可访问性设置而变化的标签部分。获取此信息的方法将在以下答案中进行探讨: