c#Windows窗体复选框文本在禁用控件时消失

时间:2015-12-15 16:25:33

标签: c# winforms checkbox

我有一个我以前从未注意到的奇怪问题。我在表格上有一个复选框,其背景颜色为web:黑色。我的复选框文字是web:gold。 一切都很好,除非没有启用该复选框。如果我做

checkbox.Enabled = false;

然后与该文本框关联的文本不显示!我之前从未注意到这一点,现在我需要这个,但无法弄清楚如何修复它。有任何想法吗? 感谢

1 个答案:

答案 0 :(得分:3)

您可以响应控件的Paint事件来执行自定义渲染。这是一个自定义绘制方法的示例,它只是在禁用复选框时正常绘制文本:

private void checkBox1_Paint(object sender, PaintEventArgs e)
{
    base.OnPaint(e);

    if (!checkBox1.Enabled)
    {
        CheckBox checkbox = sender as CheckBox;

        int x = ClientRectangle.X + CheckBoxRenderer.GetGlyphSize(
            e.Graphics, CheckBoxState.UncheckedNormal).Width + 1;
        int y = ClientRectangle.Y + 1;

        TextRenderer.DrawText(e.Graphics, checkbox.Text, 
            checkbox.Font, new Point(x, y), checkbox.ForeColor, 
            TextFormatFlags.LeftAndRightPadding);
    }
}

(确切的X和Y坐标可能需要调整,具体取决于您的字体和其他渲染特征。)

可以在控件的“属性”窗口中设置“Paint”方法 - 它位于“事件”部分的“外观”下。您可以双击空白区域以创建空事件处理程序并转到代码。