我有一个我以前从未注意到的奇怪问题。我在表格上有一个复选框,其背景颜色为web:黑色。我的复选框文字是web:gold。 一切都很好,除非没有启用该复选框。如果我做
checkbox.Enabled = false;
然后与该文本框关联的文本不显示!我之前从未注意到这一点,现在我需要这个,但无法弄清楚如何修复它。有任何想法吗? 感谢
答案 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”方法 - 它位于“事件”部分的“外观”下。您可以双击空白区域以创建空事件处理程序并转到代码。