Изменение BorderStyle внутри OnCreateControl вызывает его запуск снова - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть расширенный RichTextBox:

public class RichTextBoxEx : RichTextBox
{
    protected override void OnCreateControl()
    {
        Text = "Hello World";
        base.OnCreateControl();
    }
}

Когда я удаляю границу с помощью BorderStyle = BorderStyle.None;, метод вызывается дважды:

protected override void OnCreateControl()
{
    BorderStyle = BorderStyle.None;
    Text = "Hello World";
    base.OnCreateControl();
}

Почему это происходит?

1 Ответ

0 голосов
/ 12 февраля 2019

При установке BorderStyle он проверяет, отличается ли новый стиль границы от текущего значения, воссоздает дескриптор , что приводит к вызову OnCreateControl в конце вызовов метода.

Если вы хотите изменить значение по умолчанию для свойства BorderStyle, которое было установлено в элементе управления TextBoxBase, правильное расположение находится в конструкторе элемента управления:

public class RichTextBoxEx : RichTextBox
{
    RichTextBoxEx ()
    {
        BorderStyle = BorderStyle.None;
    }
}

Text собственность отличается.Я описал ответ на ваш другой вопрос.

...