我从TextBox继承并覆盖OnInit。

Protected Overrides Sub OnInit(e As EventArgs)

MyBase.OnInit(e)

' I'm adding a dynamic control to go along with my textbox here...
Controls.Add(Something)

End Sub

在上面的示例中,我有MyBase.OnInit(e),但是我一直在使用我的控件一段时间了,因为我忘了把它放在那里。这是我通常出于习惯而做的事情,因此我从未考虑过它的目的:



有点尴尬的是,这对我来说尚不明确,但我的控制效果很好,所以我只是希望有人能举例说明可能导致问题的原因。

最佳答案

查看reference source codeTextBox,如果您继承Control的继承,您会看到这是 OnInit 的基本代码:

protected internal virtual void OnInit(EventArgs e) {
    if(HasEvents()) {
        EventHandler handler = _events[EventInit] as EventHandler;
        if(handler != null) {
            handler(this, e);
        }
    }
}

因此,如果您不致电base.OnInit,这将是您所错过的。

关于c# - 在派生类中重写MyBase.OnInit(e)有什么影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36683600/

10-09 16:40