以baseform激活的事件不';t触发器

本文关键字:触发器 baseform 激活 事件 | 更新日期: 2023-09-27 18:29:34

在此输入代码我已经基于两个基本表单构建了一个winform MDI应用程序,一个是带有网格的列表表单(_listform),另一个是用于显示子数据的数据表单(_dataform)。

当我将继承的数据表单加载到MDI中时,会触发基本表单(_dataform)中激活的事件,并自动设置一些属性。当我将继承的列表表单(_listform)加载到MDI中时,激活的事件是而不是触发的。

我的子窗体没有(被高估的)激活事件,这两种窗体没有显著差异,只有一种触发了事件,另一种没有。

  • 我已经在代码中和/或与设计器一起添加了事件处理程序:否触发器
  • 我在子窗体中添加了一个新的激活事件,并调用base.onActivated(e):无触发器

目前,我将一些代码移到了textchanged事件中(也发生过一次),但为什么这个Activated事件没有被触发呢?

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

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

编辑:根据请求来源:

_BaseForm:字体和一般背景(无事件)

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;
    }
}

我知道激活事件中的Click每次激活都会触发,但现在这无关紧要:主要问题是:整个事件不会触发。尽管_DataForm中的事件(也继承自_BaseForm)已被触发。

以baseform激活的事件不';t触发器

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