c# - 继承窗体上的 OnLoad 事件不会被调用

标签 c# winforms inheritance

我有3个表格

  1. FormBase没有 onload event

  2. FormBaseDetail : FormBase -> 在这个表格上,我使用视觉设计器创建了一个 on_load event

  3. FormBoxDetail : FormBaseDetail -> 在此表单上,我还使用可视化设计器在 load event 上创建了一个

FormBoxDetail已创建,onload eventFormBaseDetail被称为但不是 onload eventFormBoxDetail .这永远不会被调用。

我做错了什么?

public partial class FormBase : Form
{
    public FormBase()
    {
        InitializeComponent();
    }
}

public partial class FormBaseDetail : FormBase
{
    public FormBaseDetail()
    {
        InitializeComponent();
    }
    private void FormBaseDetail_Load(object sender, EventArgs e)
    {
        MessageBox.Show("FormBaseDetail");
    }
}

public partial class FormBoxDetail : Test_app.FormBaseDetail
{
    public FormBoxDetail()
    {
        InitializeComponent();
    }

    private void FormBoxDetail_Load(object sender, EventArgs e)
    {
        MessageBox.Show("why am i not getting called");
    }
}

最佳答案

Load 事件无法触发的原因只有两个:

  1. 事件处理程序 FormBoxDetail_Load 未附加到 Load 事件。但你是说这不是你的情况。
  2. 您没有加载 FormBoxDetail。确保您正在创建 FormBoxDetail 类的实例。可能您使用的是 FormBaseDetail。确保您使用的是正确的表单类。

此处将触发两个事件处理程序:

var form = new FormBoxDetail();
form.Show();

第一个是 FormBaseDetail_Load 处理程序,然后是 FormBoxDetail_Load 处理程序。

关于c# - 继承窗体上的 OnLoad 事件不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598901/

相关文章:

c# - Prism 嵌入图像

c# - MVC 5 - jQueryUI 对话框 View 不显示

c# - winforms设计器中自定义控件的格式属性

c# - 找不到有效的 DotNetBrowser 许可证。请确保您已正确设置许可证

c# - 从具有抽象属性的泛型类继承

java - 在Java设计中组合不再被使用得太多了吗?

c# - 类型转换问题

c# - 从 Google Chrome 下载文件时出现网络错误

c# - 为什么在 WinForms 中可以跨线程添加控件,而在 WPF 中不能?

java - 具有包/默认访问的跨包继承