以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)已被触发。
在这种情况下,网格(第三方控制)重载(劫持)表单的激活和加载事件,并且在原始事件之后不触发基本事件。