Поскольку сам класс наследует класс TextBox
, вам не нужно создавать внутреннее текстовое поле.
Имея это в виду, вы можете удалить объявление private TextBox textBox
и заменитьссылки на этот член с this
, поскольку this
является потомком TextBox
.
В конструкторе вы также удалите this.Controls.Add(textBox);
, поскольку больше нет внутреннего элемента управления для добавления.
Переопределенное свойство Text
также может быть удалено, поскольку оно не добавляет функциональности к определению TextBox
.
Метод InvalidateSize
необходимо будет переработать, так как настройка *Элемент 1018 * запускает метод-обработчик TextBoxEx_Resize
, который снова вызывает метод InvalidateSize
, что в конечном итоге вызывает StackOverflowException
.
Последнее и важное.Согласно MSDN ...
Если для свойства Multiline установлено значение true, установка свойства PasswordChar не имеет визуального эффекта.Если для свойства PasswordChar установлено значение true, действия по вырезанию, копированию и вставке в элементе управления с помощью клавиатуры не могут быть выполнены независимо от того, установлено ли для свойства Multiline значение true или false.
Значениетекстовое поле PasswordCharacter не будет отображаться, если текстовое поле имеет значение Multiline