覆盖 Onload 不触发 4.5 框架

override Onload not firing 4.5 framework

我正在使用 MDI 控件处理 Winforms 项目。我只是花了一些时间将框架从 2.0 升级到 4.5。我知道我会遇到一些问题,但我没想到会出现这个问题。

我没有得到经常用于触发的简单覆盖 'OnLoad' 事件。然而他们在 2.0 版本中开火。我在谷歌上搜索了一段时间,但找不到任何不搜索的理由。

这里有一些代码可供查看:

public partial class MDIParent1 : Form
{

    public void InitializeComponent()
    {
        System.ComponentModel.ComponentResourceManager(typeof(MDIParent1));
        // 
        // MDIParent1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.BackColor = System.Drawing.Color.WhiteSmoke;
        this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
        this.ClientSize = new System.Drawing.Size(1133, 223);
        this.Controls.Add(this.IconStrip_1);
        this.Controls.Add(this.pnlThumbnails);
        this.Controls.Add(this.statusStrip);
        this.Cursor = System.Windows.Forms.Cursors.Default;
        this.ForeColor = System.Drawing.SystemColors.WindowText;
        this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
        this.IsMdiContainer = true;
        this.KeyPreview = true;
        this.Location = new System.Drawing.Point(20, 20);
        this.Menu = this.mainMenu1;
        this.Name = "MDIParent1";
        this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
        this.Text = "Youll never know what this actually said";
        this.TransparencyKey = System.Drawing.Color.Yellow;
        this.statusStrip.ResumeLayout(false);
        this.statusStrip.PerformLayout();
        this.pnlThumbnails.ResumeLayout(false);
        this.thumbsTableLayoutPanel.ResumeLayout(false);
        this.tabThumbnails.ResumeLayout(false);
        this.IconStrip_1.ResumeLayout(false);
        this.IconStrip_1.PerformLayout();
        this.ResumeLayout(false);
        this.PerformLayout();
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        ...
        //Not Firing! in 4.5?!
    }   
}

我删减了我认为可能有助于您解决我的问题的内容。请记住,它在 2.0 中有效,但当我将其升级到 4.5 时却无效。它确实建立了,但奇怪的是,并没有触发这个事件。当然这是一款大软件,类似的事件在项目中随处可见。

我需要禁用 'Just my code',然后听取上面评论的 'Hans Passant' 并寻找 'First chance Exception',它采用 FileLoadException 的形式。但真正的问题是,在实际加载表单之前,后台仍然有一些 2.0 代码的引用 运行。我临时解决了这个问题,方法是将其放入 AppConfig:<startup useLegacyV2RuntimeActivationPolicy="true"> 然后我的 OnLoad 开始启动。