C# 如何更改禁用的多行文本框的前景色?
我有一个多行文本框。禁用前景色时,如何更改前景色 我在这里找到了一个解决办法 但是,当MultiLine为true时,查找文本的当前可见部分(即当前可见的行和字符)有点复杂 所以有人知道如何使用WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC消息来更改C#NET中文本框的前颜色吗? 或 如何在不覆盖的情况下更改禁用文本框的前景色C# 如何更改禁用的多行文本框的前景色?,c#,winforms,textbox,C#,Winforms,Textbox,我有一个多行文本框。禁用前景色时,如何更改前景色 我在这里找到了一个解决办法 但是,当MultiLine为true时,查找文本的当前可见部分(即当前可见的行和字符)有点复杂 所以有人知道如何使用WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC消息来更改C#NET中文本框的前颜色吗? 或 如何在不覆盖的情况下更改禁用文本框的前景色 OnPaint() 方法?为什么不简单一点 保持文本框处于启用状态,并根据需要设置前景和背景颜色。如果您希望用户无法对其进行对焦,则使用事
OnPaint()
方法?为什么不简单一点
保持
文本框
处于启用状态,并根据需要设置前景
和背景
颜色。如果您希望用户无法对其进行对焦,则使用事件textBox.Focused
来检测其对焦,当事件发生时,通过编程将任何其他控件设置为对焦。而不是使用textBox的enbled属性。为什么不使用按键事件
private bool isDisabled = false;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (isDisabled == true)
{
e.KeyChar = (char)0;
}
}
您可以在每次isDisable=true时更改前景色
希望有帮助您可以:
richTextBox1.ForeColor = System.Drawing.Color.Red
或者,如果您想使用黑色,您必须使用以下技巧:
richTextBox1.ForeColor = System.Drawing.Color.FromArgb(0,0,0);
糟糕的主意!如果两个控件都这样做了会怎么样?或者,如果所有控件都执行此操作,该怎么办?@SriramSakthivel您可以设置
标记
属性,并可以验证控件的当前状态。做一件事不是唯一的方法,有很多方法。所有这些都是正确的。这也是问题的解决办法。@Shaharyar:谢谢你的建议。我正在自定义TextBox控件。因此,不可能使用此标记
属性和解决方法。我正在寻找一个更好的解决方案。谢谢你的想法。这将是我的第三个选择。当我自定义System.Windows.Forms.TextBox的外观以创建一个公共控件时,我正在寻找一种处理通知消息的方法,并设置HBrush或类似的东西。最后,我决定覆盖OnPaint()
,并通过计算当前滚动位置和所有内容来绘制文本。