【问题标题】:CheckBox disabled - disable only check box, not labelCheckBox disabled - 仅禁用复选框,不禁用标签
【发布时间】:2015-04-25 08:35:07
【问题描述】:

我在我的 Winforms 应用程序中使用 CheckBox,它会向用户显示是否设置了某些功能。如果功能正在运行,则 CheckBox 会闪烁(标签在 1 秒间隔内从黑色变为灰色)。但在某些情况下,我不想让用户设置打开/关闭功能 - 在这种情况下,我禁用 CheckBox。但是这个禁用复选框包括它的标签,如果功能正在运行,标签不会闪烁。

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

【问题讨论】:

    标签: windows checkbox label disabled-control isenabled


    【解决方案1】:

    有很多方法可以解决这个问题。按难度升序排列:

    1。 CheckBox.AutoCheck 属性

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

    2。自定义控件

    使用带有CheckBox.Text = "";CheckBox 和单独的Label 控件来实现您自己的自定义复选框控件。需要时,只需禁用 CheckBox 而不是 Label

    3。覆盖 OnPaint

    创建一个派生自CheckBox 的控件并覆盖OnPaint 方法。然后,您可以用您喜欢的任何颜色绘制标签部分。棘手的部分是获取框的大小和位置以及标签部分,这些部分因操作系统版本、主题和可访问性设置而异。以下答案探讨了获取此信息的方法:

    我。 Get the size of checkbox

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

    【讨论】:

    • 我想 CheckBox 看起来它已被禁用,因此解决方案 1 不适合我。解决方案3对于这么小的东西似乎太复杂了......我认为自定义控件是最好的方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    相关资源
    最近更新 更多