введите код здесь. Я создал MDI-приложение winform, основанное на двух базовых формах: форме списка с сеткой (_ListForm) и форме данных для отображения дочерних данных (_DataForm).
Когда я загружаю унаследованную форму данныхв MDI активируется событие из базовой формы (_DataForm), и некоторые свойства устанавливаются автоматически.Когда я загружаю унаследованную форму списка (_ListForm) в MDI, активируется событие , а не .
Моя дочерняя форма не имеет (переопределенного) активированного события, нет существенной разницыв двух формах только один вызывает событие, а другой нет.
- Я добавил обработчик событий в коде и / или с конструктором: нет триггера
- I 'мы добавили новое активированное событие в дочернюю форму и вызвали base.onActivation (e): нет триггера
На данный момент я переместил часть кода в событие textaged (которое также происходит один раз), но почемуэто активированное событие не запускается?
Может добавлять тонны примеров кода, если необходимо, но не уверен, что отправлять.
РЕДАКТИРОВАТЬ: Забыл упомянуть, то же самое с 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;
}
}
Я знаю, что щелчок внутри активированного события будет срабатывать каждый раз, когда он активируется, но пока это не имеет значения: главная проблема в том, что все событие не сработает.Хотя событие в _DataForm (также унаследованное от _BaseForm) вызывается .