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



我有一个以前从未注意到的奇怪问题。我有一个复选框的形式,其背景颜色是网络:黑色。我的复选框文本是web:gold。除了未启用该复选框外,其他一切都很好。如果我做

checkbox.Enabled = false;

则与该文本框关联的文本不会显示!我以前从未注意到这一点,现在我需要这个,但不知道如何解决。有什么想法吗?感谢

您可以响应控件的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坐标可能需要根据您的字体和其他渲染特性进行调整。)

可以在控件的"属性"窗口中设置"绘制"方法,该方法位于"事件"区域的"外观"下。您可以双击空白区域来创建一个空的事件处理程序,然后转到代码。

最新更新