假设我有一个控件,我想阻止它被编辑。如何禁用.net Winforms控件而不更改其外观?
将控件的Enabled属性设置为False将会起作用,但控件外观会相应地发生变化,通常会导致难以读取灰色字体的黑色。当可读性仍然很重要时,这是一个真正的问题。
对于一个文本框,有几个明显的修正:
Textbox1.BackColor = Color.White;
或
Textbox1.ReadOnly= true; // instead of setting Enabled to false
但不幸的是这是行不通的每一个控件(如单选按钮)
另一个解决方法是让Enabled属性不变,并且像这样订阅焦点事件(但这不是一个真正优雅的解决方案)
this.Textbox1.Enter += new System.EventHandler(this.Textbox1_Enter);
private void Textbox1_Enter(object sender, EventArgs e)
{
Textbox1.FindForm().ActiveControl = null;
}
你见过解决这个问题的其他方法吗? (我的意思是真实世界的解决方案;当然你可以捕获控件的截图并在控件上显示副本...:p)
我在实际完成问题之前发帖。 – 2009-01-27 17:24:36
啊哈!另一个声誉狙击手:) – Brann 2009-01-27 17:27:54