如何在禁用(即Enabled = false)RichTextBox上将背景颜色和字体颜色设置为“正常”?
由于
答案 0 :(得分:3)
Windows用户界面指南要求禁用已禁用的控件。显而易见的好处是,用户可以判断将鼠标悬停在控件上是没有意义的,尝试将焦点设置为它。与工具箱中的所有控件一样,RichTextBox也实现了此指南。覆盖其绘画行为是不切实际的。考虑ReadOnly属性。
答案 1 :(得分:1)
模拟被禁用的属性。实现一个属性,当设置为false时,控件将不会获得焦点或忽略所有键击。 在我看来很奇怪,但程序员想要程序员想要的东西! ; - ]
答案 2 :(得分:1)
我会创建一个继承自RichTextBox的新控件。您可以覆盖BackColor属性以始终返回类似白色的内容。可以使用字体颜色完成类似的操作。我认为你可以做一些事情,比如:
class CustomRichTextBox : System.Windows.Forms.RichTextBox {
public override System.Drawing.Color BackColor {
get { return System.Drawing.Color.White; }
set { base.BackColor = System.Drawing.Color.White; }
}
}
虽然这可能不起作用,因为您可能必须重写OnPaint方法以绕过默认的灰色行为。
另一种选择是简单地使用readonly属性。 ReadOnly与enabled = false几乎相同,只是您仍然可以在文本框中单击(您无法编辑它)。当它只读时,你仍然可以控制正常的颜色属性,而不必覆盖任何东西。
如果您想要更具创意,可以在RichTextBox的Enter事件中添加一个委托,将焦点设置为其他控件,以防止用户甚至点击该框(启用后不会让您做)