C# baseform中的已激活事件不会触发

C# baseform中的已激活事件不会触发,c#,winforms,inheritance,C#,Winforms,Inheritance,在此处输入代码我基于两个基本表单构建了一个winform MDI应用程序,一个是带有网格的listform,另一个是用于显示子数据的dataform 当我将继承的数据表单加载到MDI中时,将触发来自基本表单_dataform的激活事件,并自动设置一些属性。当我将继承的listform\u listform加载到MDI中时,不会触发激活的事件 我的子窗体没有被重写的激活事件,这两种窗体没有显著差异,只有一个触发事件,一个没有 我在代码和/或设计器中添加了eventhandler:否 触发 我在子窗

在此处输入代码我基于两个基本表单构建了一个winform MDI应用程序,一个是带有网格的listform,另一个是用于显示子数据的dataform

当我将继承的数据表单加载到MDI中时,将触发来自基本表单_dataform的激活事件,并自动设置一些属性。当我将继承的listform\u listform加载到MDI中时,不会触发激活的事件

我的子窗体没有被重写的激活事件,这两种窗体没有显著差异,只有一个触发事件,一个没有

我在代码和/或设计器中添加了eventhandler:否 触发 我在子窗体中添加了一个新的已激活事件,名为 base.onActivatede:无触发器 现在,我将一些代码移动到textchanged事件中,该事件也会发生一次,但是为什么这个激活的事件不会被触发呢

如果需要,可以添加大量代码示例,但不确定要发布什么

编辑:忘了提一下,LoadEvent也一样-不会以任何方式触发

编辑:根据请求编辑源:

_基本形式:字体和一般背景无事件

public partial class _BaseForm : Form
{
    public _BaseForm()
    {
        InitializeComponent();
    }
_ListForm:网格和按钮

public partial class _ListForm : _BaseForm
{
    public _ListForm()
    {
        InitializeComponent();
        this.Activated += new EventHandler(_ListForm_Activated);
        this.DialogResult = System.Windows.Forms.DialogResult.Cancel;

        this.grid1.UltraGrid.DisplayLayout.Bands[0].Columns.ClearUnbound();
        this.grid1.UltraGrid.DisplayLayout.Override.AllowAddNew = Infragistics.Win.UltraWinGrid.AllowAddNew.No;
        this.grid1.UltraGrid.DisplayLayout.Override.AllowDelete = Infragistics.Win.DefaultableBoolean.False;
        this.grid1.UltraGrid.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.False;
        this.grid1.UltraGrid.DisplayLayout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.RowSelect;

        this.grid1.PopulateGridColumns += new FB.Windows.Controls.Grid.PopulateGridColumnsEventHandler(grid1_PopulateGridColumns);
        this.grid1.UltraGrid.InitializeLayout += new Infragistics.Win.UltraWinGrid.InitializeLayoutEventHandler(UltraGrid_InitializeLayout);
        this.grid1.RowSelected += new FB.Windows.Controls.Grid.RowSelectedEventHandler(grid1_RowSelected);
    }
_设计器中的ListForm事件或来自ctor的代码:

    this.Activated += new System.EventHandler(this._ListForm_Activated);
    this.Load += new System.EventHandler(this._ListForm_Load);
活动本身:

private void _ListForm_Activated(object sender, EventArgs e)
{
    if (AutoSearchOnOpen)
    {
        button1_Click(sender, e);
        this.grid1.Focus();
        this.ActiveControl = this.grid1;
    }
    else
    {
        this.textBox1.Focus();
        this.ActiveControl = this.textBox1;
    }
}

我知道每次激活时,激活事件内部的点击都会触发,但现在这无关紧要:主要问题是:整个事件不会触发。虽然也从_BaseForm继承的_DataForm中的事件被激发。

在这种情况下,网格第三方控件重载劫持表单的激活和加载事件,并且在原始事件之后不触发基本事件。

MDI子项的确切类型是什么?让我们来看看你提到的事件的代码和连接它们的代码。你所说的类型是什么意思?PS源示例在代码和设计器中同时显示激活的事件-但实际上只有一个-我要么在设计器中绑定事件并注释代码,要么在代码中绑定事件并删除设计器绑定。您拥有的代码示例应该可以工作。如果能看到InitializeComponent方法,那就太好了。在这一点上,我认为你应该备份你的ListForm文件,然后注释掉所有的网格和额外的代码,这样你就只剩下一个空白的ListForm,看看它是否触发了你的事件。如果是这样的话,慢慢地把东西注释回来。InitializeComponent方法是Windows窗体设计器生成的代码。没有什么真正令人兴奋的地方,只是定位等等。就像你建议的那样:我尝试注释和取消注释所有代码-网格似乎是问题所在-每当网格被放置并连接到表单上的事件时,加载事件都不会触发。我已经为它创建了一个解决方案。。