更改边框样式里面的OnCreate控制使其再次触发

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

我有一个扩展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();
}

这究竟是为什么?

c# .net winforms richtextbox windows-forms-designer
1个回答
1
投票

当设置BorderStyle,它会检查新的边框样式与当前值不同,它recreates the handle这导致调用在方法调用结束OnCreateControl

如果你想改变一个在BorderStyle控制被定为TextBoxBase属性的默认值,正确的位置是在你的控制的构造函数:

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

Text属性是不同的。我关于它描述的answer到您的其他问题。

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