【发布时间】:2010-08-25 12:54:14
【问题描述】:
我用 C# 编写了一个继承自 RichTextBox 的自定义控件。此控件的目的是包含所有改进和更改,例如修改的行号和让控件仅在需要时重新绘制自身。
昨天,我在访问此控件的 Lines 属性时注意到内存峰值(通常是 OOM 异常)(有时控件中有 600,000 多行)。我编写了不再涉及它的变通办法,但我仍然想完全删除它,以便将来使用我的控件的人不要使用它。
Lines 属性是 System.Windows.Forms.TextBoxBase.Lines。理想情况下,我希望这个属性的 string[] 永远不会被触及;当我在控件中加载文本时,我不希望控件执行任何操作来填充此行属性(因为它完全没有意义,并且会消耗一些时间和资源)。
有人有什么想法吗?
编辑:我试过了
公共覆盖字符串 [] 行 { 得到{返回空; } 放 { ; } // 没做什么 }但是 VS 说“不能覆盖继承的成员 System.Windows.Forms.TextBoxBase.Lines.get 因为它没有被标记为虚拟、抽象或覆盖。
所以看起来我无法覆盖或删除它。我认为 RichTextBox 正在设置属性,因为它在更改文本后被填充。有没有办法让我捕获和处理该消息?
【问题讨论】:
标签: c# .net richtextbox overriding