在这里输入代码我已经构建了一个基于两个基础形式的winform MDI应用程序,一个带有网格的列表形式(_ListForm)和一个显示子数据的数据形式(_DataForm)。
当我将继承的数据形式加载到MDI中时,将触发基本形式(_DataForm)中的激活事件,并自动设置某些属性。当我将继承的listform(_ListForm)加载到MDI中时,激活的事件不被触发。
我的childform没有(覆盖)激活事件,两种形式没有显着差异,只有一种触发事件,一种不触发。
现在我把一些代码移到了textchanged事件中(也发生了一次),但是为什么没有触发这个Activated-event呢?
如果需要,可以添加大量的代码示例,但不确定要发布的内容。
编辑:忘记提及,它与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继承)是被触发。
答案 0 :(得分:0)
在这种情况下,网格(第三方控件)重载(劫持)表单的激活和加载事件,并且不会在原始事件之后触发基本事件。