【问题标题】:change textcolor of read only text box c#更改只读文本框c#的文本颜色
【发布时间】:2020-07-16 18:05:22
【问题描述】:

我有 textBox1,它是只读的。我正在尝试改变

textBox1.ForeColor = Color.Red;

但它不起作用。有什么想法吗?

【问题讨论】:

标签: c# textbox readonly


【解决方案1】:

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

如果您需要将其显示为红色,则不应设置 ReadOnly 属性,而应手动处理 TextChanged 事件并保持旧值不变。但我不推荐它。

【讨论】:

  • @BrianSnow - 好吧,因为如果您开始在代码隐藏中工作,而不是将您的 UI 封装并松散耦合到背后的逻辑,它往往会变得混乱。
  • 更好的方法是让 texbox 具有您想要的行为作为自定义控件(以防您打算重用它)
  • 一个更简单的解决方案是将文本框 BackColor 设置为自身。即 textBox1.BackColor = textBox1.BackColor; textBox1.ForeColor = 颜色.红色; textBox1.ReadOnly = true;这会将颜色设置为自定义
【解决方案2】:

尝试取消 KeyPress 的事件:

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

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

ReadOnly 属性总是使控件变灰。这是默认行为。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      这应该对你有帮助:

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

      【讨论】:

        【解决方案5】:

        使用 RichTextBox。只读时,继续以彩色显示文本

        【讨论】:

          【解决方案6】:

          这应该对你有帮助。

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

          【讨论】:

          • 您好,欢迎来到 SO。请参阅我们的帮助中心,尤其是stackoverflow.com/help/how-to-answer。特别是,您能否编辑您的答案以解释这如何以及为什么可以解决提问者的问题?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-19
          • 2010-10-30
          • 1970-01-01
          • 2022-06-23
          • 1970-01-01
          • 2019-02-05
          • 1970-01-01
          相关资源
          最近更新 更多