我继承自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
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我有MyBase.OnInit(e),但是我在没有控件的情况下使用了一段时间,因为我忘了把它放在那里。这是我通常出于习惯而做的事情,因此我从未考虑过它的目的:
在派生类中重写OnInit时,请确保调用基类的OnInit方法,以便已注册的委托接收事件。
有点尴尬的是,这对我来说尚不明确,但我的控制效果很好,所以我只是希望有人能举例说明可能造成问题的原因。
查看 的参考源代码,TextBox如果您遵循继承Control,您会看到这是 的基本代码OnInit:
protected internal virtual void OnInit(EventArgs e) {
if(HasEvents()) {
EventHandler handler = _events[EventInit] as EventHandler;
if(handler != null) {
handler(this, e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以如果你不打电话base.OnInit,这就是你会错过的。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |