我有3个表格

  • FormBase 没有 onload event
  • FormBaseDetail : FormBase ->
    在这个表单上,我使用视觉设计器创建了一个 on_load event
  • FormBoxDetail : FormBaseDetail ->
    在这个表单上,我还使用视觉设计器创建了一个 on load event

  • 创建 FormBoxDetail 时,会调用 onload event 上的 FormBaseDetail 而不是 onload event 上的 FormBoxDetail。这永远不会被调用。

    我究竟做错了什么 ?
    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 事件的原因只有两个:

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

  • 这里将触发两个事件处理程序:
    var form = new FormBoxDetail();
    form.Show();
    

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

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

    10-13 06:00