2013-02-20 78 views
0

我有textBox1这是只读的。我试图改变改变只读文本框的文本颜色c#

textBox1.ForeColor = Color.Red; 

但它不起作用。任何想法 ?

+0

发现这个问题http://stackoverflow.com/questions/276179/how-to-change-the-font-color-of-a-disabled-textbox,可能是你在找什么。 – Roise 2013-02-20 15:21:14

回答

4

当您将TextBox控件的属性设置为ReadOnly时,该文本变为灰色。这是默认行为。

如果您有要求以红色显示它,那么您不应该设置ReadOnly属性,而是手动处理TextChanged事件,并保持旧值不变。但我不推荐它。

+0

只是想知道,为什么你不建议这样做? – 2015-04-15 01:24:32

+0

@BrianSnow - 好吧,因为如果你开始在代码隐藏中工作,而不是将你的UI封装起来并松散地耦合到逻辑背后,它往往会变得混乱。 – dutzu 2015-04-20 08:05:51

+0

更好的方法是将texbox与您想要的行为一起作为自定义控件(如果您打算重新使用它) – dutzu 2015-04-20 08:11:10

0

您可以对只读文本框执行什么操作(首先将其更改为读/写),则可以覆盖所述TextBoxKeyPress()事件,并忽略从此处开始的所有输入。

1

尝试取消事件的按键:

textBox1.Text = "Test"; 
textBox1.ForeColor = Color.Red; 
textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress); 

void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
e.Handled = true; 
} 

只读属性总是灰色的控制了。这是默认行为。

0

这会帮助你:

textBox1.BackColor = Color.FromKnownColor(KnownColor.Control); 
textBox1.ForeColor = Color.Red; 
textBox1.ReadOnly = true; 
-1

这会帮助你。

textboxname.ForeColor = Color.FromKnownColor(KnownColor.selectanycolor); 
+0

您好,欢迎来到SO。请参阅我们的帮助中心,特别是http://stackoverflow.com/help/how-to-answer。特别是,请您编辑您的答案,以解释如何以及为何解决提问者的问题? – 2016-06-05 06:28:29