有谁知道哪个属性设置禁用控件的文本颜色?我必须在禁用中显示一些文本,TextBox并且我想将其颜色设置为黑色.
Eri*_*ver 56
注意:请参阅下面的Cheetah答案,因为它确定了使此解决方案起作用的先决条件.设置BackColor的TextBox.
我认为你真正想做的是启用TextBox并设置ReadOnly属性true.
更改禁用文本的颜色有点棘手TextBox.我想你可能必须子类化并覆盖OnPaint事件.
ReadOnly虽然应该给你相同的结果,!Enabled并允许你保持对颜色和格式的控制TextBox.我认为它仍然支持从TextBox禁用中选择和复制文本TextBox.
另一个简单的替代方案是使用a Label而不是a TextBox.
Che*_*tah 55
此外,为了在标记为ReadOnly的TextBox上遵守ForeColor,您必须显式设置BackColor.如果你想让它仍然使用默认的BackColor,你必须明确设置,因为设计师在这里太聪明了.将BackColor设置为当前值就足够了.我在表单的Load事件中执行此操作,如下所示:
private void FormFoo_Load(...) {
txtFoo.BackColor = txtFoo.BackColor;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
嗨,从代码端将readonly属性设置为true,或者将运行时设置为不是从设计时间
txtFingerPrints.BackColor = System.Drawing.SystemColors.Info;
txtFingerPrints.ReadOnly = true;
Run Code Online (Sandbox Code Playgroud)
我刚刚找到了一个很好的方法。在我的示例中,我使用的是 RichTextBox,但它应该适用于任何控件:
public class DisabledRichTextBox : System.Windows.Forms.RichTextBox
{
// See: http://wiki.winehq.org/List_Of_Windows_Messages
private const int WM_SETFOCUS = 0x07;
private const int WM_ENABLE = 0x0A;
private const int WM_SETCURSOR = 0x20;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (!(m.Msg == WM_SETFOCUS || m.Msg == WM_ENABLE || m.Msg == WM_SETCURSOR))
base.WndProc(ref m);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以安全地设置 Enabled = true 和 ReadOnly = false,它就像一个标签,防止焦点、用户输入、光标更改,而不会被实际禁用。
看看它是否适合你。你好
| 归档时间: |
|
| 查看次数: |
107639 次 |
| 最近记录: |