Я написал собственный элемент управления в C #, который наследуется от RichTextBox. Цель этого элемента управления состоит в том, чтобы содержать все улучшения и изменения, такие как измененная нумерация строк и заставить элемент управления перекрашивать себя только тогда, когда это необходимо.
Вчера я заметил скачки памяти (и часто исключения OOM) при доступе к свойству Lines этого элемента управления (иногда в элементе управления содержится более 600 000 строк). Я закодировал обходные пути, которые больше не включают его, но я все же хотел бы полностью удалить его, чтобы люди, которые используют мой контроль в будущем, не использовали его.
Свойством Lines является System.Windows.Forms.TextBoxBase.Lines. В идеале я бы хотел, чтобы строка [] для этого свойства никогда не затрагивалась; когда я загружаю текст в элемент управления, я НЕ хочу, чтобы элемент управления что-либо делал для заполнения этого свойства строк (поскольку оно совершенно бессмысленно и потребляет некоторое время и ресурсы).
У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: я пытался
public override string[] Lines
{
get { return null; }
set { ; } // do nothing
}
Но VS говорит, что «не может переопределить унаследованный член System.Windows.Forms.TextBoxBase.Lines.get, потому что он не помечен как виртуальный, абстрактный или переопределенный.
Так что, похоже, я не могу переопределить или удалить его. Я думаю, что RichTextBox устанавливает свойство, потому что оно заполняется после изменения текста. Есть ли способ для меня, чтобы захватить и обработать это сообщение?