Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改禁用的多行文本框的前景色?_C#_Winforms_Textbox - Fatal编程技术网

C# 如何更改禁用的多行文本框的前景色?

C# 如何更改禁用的多行文本框的前景色?,c#,winforms,textbox,C#,Winforms,Textbox,我有一个多行文本框。禁用前景色时,如何更改前景色 我在这里找到了一个解决办法 但是,当MultiLine为true时,查找文本的当前可见部分(即当前可见的行和字符)有点复杂 所以有人知道如何使用WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC消息来更改C#NET中文本框的前颜色吗? 或 如何在不覆盖的情况下更改禁用文本框的前景色 OnPaint() 方法?为什么不简单一点 保持文本框处于启用状态,并根据需要设置前景和背景颜色。如果您希望用户无法对其进行对焦,则使用事

我有一个多行文本框。禁用前景色时,如何更改前景色

我在这里找到了一个解决办法

但是,当MultiLine为true时,查找文本的当前可见部分(即当前可见的行和字符)有点复杂

所以有人知道如何使用WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC消息来更改C#NET中文本框的前颜色吗? 或 如何在不覆盖的情况下更改禁用文本框的前景色

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()
,并通过计算当前滚动位置和所有内容来绘制文本。