文本框在禁用它时会丢失前景色

时间:2016-11-08 10:08:37

标签: c# winforms colors textbox

我动态创建多个文本框,以便向用户显示信息。现在我想设置一些文本框的背景和前景,如果一个语句是真的。

所有这一切都很好,直到我禁用文本框,现在前色“重置”为标准颜色而不是显示我想要的颜色。

DataTable dt = [some data]
//Col 0: ID
//Col 1: some text
//Col 2: date

for (int i = 0; i < dt.Rows.Count; i++)
{

    DateTime d = (DateTime) dt.Rows[i].ItemArray[2];
    TextBox txt = new TextBox();
    txt.Multiline = true;
    txt.Font = tb_Aufloesung.Font;
    txt.Text = dt.Rows[i].ItemArray[1].ToString() + "\n" + d.ToString(@"dd.MM.yyyy");
    txt.Size = new Size((TextRenderer.MeasureText(dt.Rows[i].ItemArray[1].ToString(), txt.Font).Width) + 10, 34);
    txt.Location = new Point(43, 3 + split.Panel2.Controls.Count / 2 * 40);

    if(d <= DateTime.Now) {
        txt.BackColor = Color.Red;
        txt.ForeColor = Color.White;
    }    

    //txt.Enabled = false;

    split.Panel2.Controls.Add(txt);
}

当我使用上面的代码时,文本框的外观如下:

  1. 评论该行 - &gt; //txt.Enabled = false;
  2. 取消注释该行 - &gt; txt.Enabled = false;
  3. enter image description here

    我不知道为什么在第二种情况下,红色文本框的前景不应该是白色的。 任何人都有任何想法?

1 个答案:

答案 0 :(得分:0)

这就是文本框的工作方式 - 它们意味着输入,而不是显示。为什么不使用标签?