首次显示部分失败后RichTextBox ReadOnly

问题描述 投票:0回答:1

我在 Windows 窗体中使用

RichTextBox
,没有任何特殊之处

当我在构造函数中更改文本框的只读属性时,一切都会按预期工作

public MyForm()
{
    ...
    
    tbDoc.ReadOnly = true;
}

当我在第一次显示后执行相同操作时,例如,单击按钮

private void BnDoSth_Click(object sender, EventArgs e)
{
    tbDoc.ReadOnly = !tbDoc.ReadOnly;
}

只读功能仅得到部分应用。
不再可能输入文本(如预期),但更改的背景颜色不会反映在控件中。 它要么保持灰色,要么保持白色。在调试器中,我可以验证属性

BackGroundColor
是否相应更改。

使文本框或整个表单无效没有帮助。
当前的解决方法是重新创建文本框,但这对我来说似乎有点过分了......

有什么建议/类似经历吗?

c# winforms richtextbox
1个回答
0
投票

这似乎是由于

RichTextBox
中对背景颜色的一些奇怪处理造成的。

我找到了一种有点古怪的修复方法:

(1) 从

RichTextBox
派生一个新类,如下:

public sealed class MyRichTextBox : RichTextBox
{
    protected override void OnReadOnlyChanged(EventArgs e)
    {
        base.OnReadOnlyChanged(e);
        OnBackColorChanged(EventArgs.Empty);
    }
}

(2) 在表单的“Designer.cs”文件中,将

RichTextBox
的所有实例更改为
MyRichTextBox

(3) 现在当您更改

ReadOnly
状态时,背景颜色将正确更新。

© www.soinside.com 2019 - 2024. All rights reserved.